Найти в Дзене
mathreshka

Решение. Обезьяна и кокосы (#45)

Условие Ответ: 14 Решение: Пусть в доме n этажей и f(n) – это минимальное число бросков, которое требуется обезьяне для выяснения самого низкого этажа, при падении с которого кокос разбивается. Допустим, первый бросок сделан с i-го этажа. Если кокос разобьётся, то обезьяна вынуждена будет бросать второй кокос с первого этажа. Таким образом, при наихудшем раскладе ей потребуется ровно i бросков. Если же кокос не разобьётся, то обезьяне потребуется всего 1+f(n-i) бросков. Таким образом, при наихудшем раскладе обезьяне потребуется сделать max{i, 1+f(n-i)} бросков. Минимизируя выражение max{i, 1+f(n-i)} по i, мы получим рекуррентную формулу для f(n): Для одноэтажного дома f(1) = 1. Далее легко написать программу, реализующую данный подсчёт до нужного значения n = 100 f(1) = 1
f(2) = 2
f(3) = 2
f(4) = 3
f(5) = 3
f(6) = 3
f(7) = 4
f(99) = 14
f(100) = 14

Условие

Ответ: 14

Решение:

Пусть в доме n этажей и f(n) – это минимальное число бросков, которое требуется обезьяне для выяснения самого низкого этажа, при падении с которого кокос разбивается.

Допустим, первый бросок сделан с i-го этажа.

Если кокос разобьётся, то обезьяна вынуждена будет бросать второй кокос с первого этажа. Таким образом, при наихудшем раскладе ей потребуется ровно i бросков.

Если же кокос не разобьётся, то обезьяне потребуется всего 1+f(n-i) бросков. Таким образом, при наихудшем раскладе обезьяне потребуется сделать max{i, 1+f(n-i)} бросков.

Минимизируя выражение max{i, 1+f(n-i)} по i, мы получим рекуррентную формулу для f(n):

Для одноэтажного дома f(1) = 1.

Далее легко написать программу, реализующую данный подсчёт до нужного значения n = 100

f(1) = 1
f(2) = 2
f(3) = 2
f(4) = 3
f(5) = 3
f(6) = 3
f(7) = 4

f(99) = 14
f(100) = 14