LINUX.ORG.RU

История изменений

Исправление peregrine, (текущая версия) :

Долго думал (не справился бы за короткий срок), вроде так надо рассуждать:

  1. Мы пытаемся оптимизировать худший случай, значит, число бросков первого и второго шара примерно равны, если точнее, то их сумма в худшем случае всегда константа.
  2. Первым шариком мы примерно определяем место, откуда кидать, вторым учтоняем
  3. Кинув шарик 1 с этажа X, у нас осталось проверить X-1 этажей вторым шариком, таким образом, число бросков составит X-1+1(бросок первого шарика)=X, если первый шарик разбился, т.е. в худшем случае
  4. Следующий раз мы будем кидать шарик с этажа (X-1)+X, а число бросков второго шарика сократится до X-2…
  5. Продолжим процесс до достижения сотого этажа, очевидно, что уменьшающиеся шаги первого шарика конечны (X<100) и уменьшаются. Запишем формулу:
    X+(X-1)+(X-2)+...+1=100
  6. Заметим, что у нас арифметическая прогрессия… Вспомним сумму членов арифметической прогрессии и получим формулу
    X*(X+1)/2=100
  7. Решим формулу: X^2+X=200 X^2+X-200=0 D=b^2-4ac=1+800=801 sqrt(D)=28.3(с какими-то там копейками) x1=(-1-sqrt(D))/(2*1)<0, отбрасываем нафиг x2=(-1+sqrt(D))/(2*1)=27.3/2=13.65, округляем, 14
  8. Записываем этажи с которого бросать первый шарик:
    14, 14+13=27, 27+12=39, 39+11=50, 50+10=60, 60+9=69, 69+8=77, 77+7=84 84+6=90 90+5=95 95+4=99
    Вторым шариком уточняем этаж (от предыдущей попытке вверх, пока не разобьётся), если первый разбивается, сумма бросков не превысит 14, задача решена.

Исходная версия peregrine, :

Долго думал (не справился бы за короткий срок), вроде так надо рассуждать:

  1. Мы пытаемся оптимизировать худший случай, значит, число бросков первого и второго шара примерно равны, если точнее, то их сумма в худшем случае всегда константа.
  2. Первым шариком мы примерно определяем место, откуда кидать, вторым учтоняем
  3. Кинув шарик 1 с этажа X, у нас осталось проверить X-1 этажей вторым шариком, таким образом, число бросков составит X-1+1(бросок первого шарика)=X, если первый шарик разбился, т.е. в худшем случае
  4. Следующий раз мы будем кидать шарик с этажа (X-1)+X, а число бросков второго шарика сократится до X-2…
  5. Продолжим процесс до достижения сотого этажа, очевидно, что уменьшающиеся шаги первого шарика конечны (X<100) и уменьшаются. Запишем формулу:
    X+(X-1)+(X-2)+...+1=100
  6. Заметим, что у нас арифметическая прогрессия… Вспомним сумму членов арифметической прогрессии и получим формулу
    X*(X+1)/2=100
  7. Решим формулу: X^2+X=200 X^2+X-200=0 D=b^2-4ac=1+800=801 sqrt(D)=28.3(с какими-то там копейками) x1=(-1-sqrt(D))/(2*1)<0, отбрасываем нафиг x2=(-1+sqrt(D))/(2*1)=27.3/2=13.65, округляем, 14
  8. Записываем этажи с которого бросать первый шарик:
    14, 14+13=27, 27+12=39, 39+11=50, 50+10=60, 60+9=69, 69+8=77, 77+7=84 84+6=90 90+5=95 95+4=99
    Вторым шариком уточняем этаж, если первый разбивается, сумма бросков не превысит 14, задача решена.