Напишіть програму, яка розв'яже нижченаведену задачу на будь-якій новій для вас мові:

У середній школі з 1000 учнями є 1000 шафок. Завдання починається з того, що перший учень відкриває всі 1000 шафок; потім другий учень закриває шафки 2,4,6,8,10 і так далі до шафки 1000; третій учень змінює стан (відкриває закриті шафки, закриває відкриті шафки) на шафки 3,6,9,12,15 і так далі; четвертий учень змінює стан шафок 4,8,12,16 і так далі. Це триває до тих пір, поки до кожного учня не дійде черга. Скільки шафок буде відкрито в кінці? Яка ця формула?

Знайдіть рішення на Dart нижче

 

import 'dart:io';
int numberOfLockers = 1000;
// Lockers start all open because of the first student
List<String> lockers = new List.filled(numberOfLockers + 1, 'open');
main() {
for (var student = 2; student <= numberOfLockers; student++) {
// For the student, open the locker if closed, or close if open
for (var locker = student; locker <= numberOfLockers; locker += student) {
lockers[locker] = lockers[locker] == 'open' ? 'closed' : 'open';
}
}
// Count of lockers remaining open
int total = 0;
// List the lockers that remain open
for (var locker = 1; locker <= numberOfLockers; locker ++ ) {
if (lockers[locker] == 'open') {
stdout.write("${locker} ");
total += 1;
}
}
print("\nThere are ${total} lockers remaining open.");
}
// 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400 441 484 529 576 625 676 729 784 841 900 961
// There are 31 lockers remaining open.
view raw puzzle3.dart hosted with ❤ by GitHub

More like this

Get in touch

Зв'язатися з нами

Frankfurt am Main, Germany (Sales)

60354

Eckenheimer Schulstraße, 20

+38 (098) 630-49-85

info@a5.ua

Харків, Україна

61023

вул. Трінклера, 9

+38 (050) 908-31-07

info@a5.ua

Burgas, Bulgaria (Development)

8008

бул. „Транспортна“ 15, Northern Industrial Zone

+359 877 350129

info@a5.ua