MMM
12:26 23-05-2013 Brainstorm

[изображение]

Сломал мозг. Из нескольких предложенных для решения задач эту я даже не пытался решить:
В холле школьной раздевалки 100 шкафчиков. Первый ученик бежит по холлу и открывает каждый шкафчик. Второй ученик бежит по холлу и закрывает каждый второй шкафчик. Третий ученик бежит по холлу, и "изменяет статус" каждого третьего шкафчика (то есть, если шкафчик открыт - он его закрывает и наоборот). И так делают 100 учеников: каждый N-ый ученик изменяет статус каждого N-oro шкафчика. После того, как все 100 учеников пробежали через холл, какие шкафчики являются открытыми? Почему?

Комментарии:
КЛ
12:35 23-05-2013
Первый. Его никто не закрыл.
А вообще, я в двоичном счислении путаюсь
MMM
12:47 23-05-2013
КЛ,
А мне мозга не хватило посмотреть на условия задачи отвлеченно. И это не смотря на чтение умных книг по расширению сознания.
Sheypa
12:49 23-05-2013
КЛ точно ли только один? может там еще четность нечетность важна ...?
КЛ
12:58 23-05-2013
MMM Я представил матрицу 100х100 и понял, что надо включать интуицию
Sheypa точно ли только один? может там еще четность нечетность важна ...? Все может быть, но это можно узнать пересчитав матрицу
Innuendo
14:03 23-05-2013
я думаю, это задача про простые числа тоже
Innuendo
14:06 23-05-2013
то есть вот эти 2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
ящики будут точно закрыты, а остальные надо думать.
проще, конечно, алгоритм запрограммировать, да посмотреть, что получится))
GibajD
14:42 23-05-2013
Вот, придумал решение:

Все зависит от того, на сколько чисел делится номер шкафчика. Если на четное, то будет закрыт, если на нечетное, то открыт.

например: 8. делится на 1, 2, на 4 и на 8. т.е. на 4 числа, шкафчик будет закрыт.
16 - на 1, 2, на 4 на 8 на 16. на 5 чисел, значит открыт.
Lemieux
15:00 23-05-2013
крутая задача )))
Lemieux
15:06 23-05-2013
Решил. Оракл PL/SQL (Ляп было дельфи открыть)

spool open_doors.log

create table ksv_table
as
select rownum id, 0 status
from user_tables
where rownum < 101
/

select id open_door
from ksv_table
where status = 1
/

begin
for ii in 1..100 loop
update ksv_table
set status = mod(status+1, 2)
where id in (select id from ksv_table where mod(id, ii) = 0);
end loop;
commit;
end;
/

select id open_door
from ksv_table
where status = 1
/

drop table ksv_table
/



Ответ получился

Table created.


no rows selected


PL/SQL procedure successfully completed.


OPEN_DOOR
----------
1
4
9
16
25
36
49
64
81
100

10 rows selected.


Table dropped.

SQL> quit


GibajD верно сказала, от количества делимых зависит.
Lemieux
15:11 23-05-2013
последовательность = ряд квадратов. Почему - не знаю. Логика где-то в диагоналях матрицы
КЛ
15:14 23-05-2013
Забавно 1^2, 2^2 и т.д.
GibajD
15:16 23-05-2013
Lemieux я - это ОН ))
Lemieux
15:26 23-05-2013
GibajD Прости меня, что-то быстро почитал и по картинке решил. Опознался )
GibajD
15:29 23-05-2013
Lemieux да пофиг
Просто интересно: а что в моей картинке женского?
Lemieux
16:07 23-05-2013
GibajD Природа. Да ладно вам! )
Indrigis
20:55 23-05-2013
Как совершенно верно отметили вверху, открыты будут шкафчики, номер которых - квадрат целого числа.

Почему:
Любое целое число N от 1 до 100 может быть представлено конечным числом пар целых чисел a и b таких, что a*b=N. Включая простые числа - там одна пара - 1 и N. Заметим - пар чисел. Поэтому для каждого из ящиков операция закрытия/открытия его учениками (учеником номер a и учеником номер b) будет произведена конечное число пар раз. Т.е. его состояние в результате действий каждой пары будет приведено обратно к закрытому.

Исключением из этого правила будут квадраты целых чисел, так как для каждого из них в одной из пар a=b, т.е. открыть и закрыть обратно ящик должен один и тот же ученик. Так как он этого, очевидно, делать не будет, состояние ящика изменится один раз - на открытое.
Кассиопея
22:46 23-05-2013
прикольно. Столько рассуждений. Программу даже написали. А можно и физический опыт еще провести.
MMM
11:45 27-05-2013
Господа, вы мегамонсты!
Наверняка с помощью несложных инструментов я бы тоже посчитал, но мне было ооооочень лень. Потому как а) требовалось решить эту задачу в уме б) в ограниченное время в) стало жалко времени.
Но всем принявшим участие огромное спасибо и мое искреннее уважение!
Рад, что у нас еще есть люди с головой, а не только с фотоаппаратами.
Innuendo
12:04 28-05-2013
только про кубик собралась подумать, как все пропало( верните кубик)
MMM
12:10 28-05-2013
Innuendo, вернул (скрывал на период добавления голосовалки)
Innuendo
12:13 28-05-2013
MMM, спасибо))