
![]() |
NetLab · Rules · Torrent Tracker · Have a problem? · Eng/Rus |
![]() ![]() ![]() ![]() ![]() |
Welcome Guest ( Log In | Register | Validation ) | Resend Validation Email |
Pages: (3) [1] 2 3 > ( Show unread post ) |
![]() |
|
|
||
Advanced Group: Members Posts: 250 Warn:0% ![]() |
Давненько задач не было. Заранее прошу прощения у тех, кто эту уже знает. Некий завод производит одинаковые лампочки. Их прочность измеряется в "этажах": например "31" означает, что лампочка никогда не разобьется, будучи брошенной с 31го этажа, но обязательно разобьется, если бросить с 32го. Нам нужно определить эту прочность с двумя лампочками и 100 этажами за минимальное число попыток (бросков). Вопрос: сколько попыток нам придется сделать в худшем случае (конечно, при оптимальном алгоритме)? Сразу поясню: если бы у нас была одна лампочка, то ответ был бы 100 - нам пришлось бы сбрасывать с 1го этажа, затем 2го и т.д. Если много лампочек, то ответ 7 - поскольку мы бы каждый раз делили оставшиеся этажи пополам, а 100 < 2^7. Кстати, для меня задачка интересна тем, что когда я решал (давно), то несколько раз считал, что "вот уже" получил правильный ответ. Потом наступало очередное прозрение... |
||
|
Posted: 28-02-2006, 22:02
(post 2, #558709)
|
||
Voodoo child ![]() Group: Netlab Soldier Posts: 13742 Warn:0% ![]() |
Задачку буду решать с утреца, т.к. ща уже мозги не варят. ![]() А вот можно узнать, под какой торговой маркой продаются лампочки, которые выдерживают падение с 31-го этажа? Я бы купил. А то наши лампочки не выдерживают падения и с метровой высоты. ![]() |
||
|
Posted: 28-02-2006, 22:24
(post 3, #558725)
|
||
Homo homini lupus ЭСТ Group: Members Posts: 2256 Warn:0% ![]() |
У мя не варят даже чтоб понять, о чем речь... |
||
|
Posted: 28-02-2006, 22:34
(post 4, #558732)
|
||
Voodoo child ![]() Group: Netlab Soldier Posts: 13742 Warn:0% ![]() |
Речь о том, как закидывать с балкона прохожих особо прочными лампочками. ![]() |
||
|
Posted: 28-02-2006, 22:50
(post 5, #558742)
|
||
Daysleeper ![]() Group: Privileged Posts: 21949 Warn:0% ![]() |
с каждого третьего этажа? ![]() |
||
|
Posted: 28-02-2006, 22:56
(post 6, #558747)
|
||
Напускатель дыма Group: Prestige Posts: 3401 Warn:0% ![]() |
Не смог придумать ничего более оригинального, чем бросить пербю лампу с 50го этажа, а вторую потом бросать начинаяя с 1го или 51го в зависимости от результата. Как то оно слишком просто. Наверняка задачка с хитростью. Тьфу, глупость сморозил. This post has been edited by genka on 28-02-2006, 23:02 |
||
|
Posted: 01-03-2006, 02:03
(post 7, #558848)
|
||
Ненавижу Fujitsu за их харды... Group: Members Posts: 3274 Warn:0% ![]() |
Не могу уделить на подумать больше чем 5 минут - ночь все-таки... За 19 раз знаю как (первую кидаем с шагом 10 этажей, разбивается на сотом, затем 91, 92.... 99 этаж разбивает вторую лампочку). Но стопроцентно можно и меньше раз кидать. Тут надо учесть, что если решили кидать первую лампочку с шагом в 10 этажей, то после неразбития лампочки, к примеру на 10-м этаже шаг должен меняться - так как перед нами стоит новая задача про две лампочки и 90 этажей. Со следующим неразбитием задача опять новая. |
||
|
Posted: 01-03-2006, 06:18
(post 8, #558908)
|
||||
Superman Group: Members Posts: 1612 Warn:0% ![]() |
Заранее извиняюсь за мой французский, но речь идет о том, как зах.ярить Иран коврово-лампочными бомбардировками, не разбив при этом ни одной лампочки. ![]() |
||||
|
Posted: 01-03-2006, 06:59
(post 9, #558912)
|
||
зломбный релизомби Group: News makers Posts: 5600 Warn:0% ![]() |
прошу прощения... отстал от жизни..заработался... может кто-нить обьяснить кто собирается бомбить Иран и зачем?... уже не в первый раз слышу... и в новостях не пишут ничего... а может плохо искал... |
||
|
Posted: 01-03-2006, 07:23
(post 10, #558915)
|
||
Talk too much Group: Members Posts: 2023 Warn:0% ![]() |
Задача сводится к поиску минимального значения среди худших попыток при разном шаге. Получаем формулу max_step = 100/N + N - 1. Получаем при выборе шага от 8 до 13 максимальное число попыток равно 19. При выборе шага меньше или больше число попыток увеличивается. |
||
|
Posted: 01-03-2006, 07:42
(post 11, #558918)
|
||
Heretic Group: Members Posts: 1504 Warn:0% ![]() |
|
||
|
Posted: 01-03-2006, 09:27
(post 12, #558942)
|
||
Сварливый Мозг Клуба ![]() Group: Roots Posts: 22892 |
ответ неверный. ![]() Шаг не должен быть равным, ибо после первой-же попытки количество этажей и оставшихся попыток меняется. Поясню - кидаем с 10-го этажа: если разбиласть, то кидаем с 1, 2, 3...9 пока не разобьется. Максимум 10 попыток. Если не разбилась, то кидаем с 19-го этажа. Не с 20-го! Если разбилась, то кидаем с 11, 12,..., 18 пока не разобьется. Максимум 10 (2+max of 8) попыток. Если не разбилась - кидаем с 27-го. Если разбилась, то кидаем 20, 21, 22...26 пока не разобьется. Максимум 10 (3+ max of 7) попыток. Как видите, при такой стратегии сохраняется количество попыток при начальных неудачных бросках. Однако, первоначальный бросок с 10-го этажа не самый эффективный. Ибо здание закончится на 55-м этаже. А для 100 этажей надо начать с... |
||
|
Posted: 01-03-2006, 11:09
(post 13, #558985)
|
||
Докопаемся до истины! Group: Members Posts: 935 Warn:0% ![]() |
Если f(N) - искомое число бросаний, то f(1)=1 и f(N) = min_{0<n<N} max(n-1, f(N-n)+1) Поэтому f(100)=13, и начинаем с 12, 13 или 14 этажа ![]() |
||
|
Posted: 01-03-2006, 11:35
(post 14, #558993)
|
||
Бросающийся Group: Members Posts: 760 Warn:0% ![]() |
100 = (А1 + An)*n/2; A1=1, n=An => An^2 + An = 200, решаем........ Done Итого : если начнём с 14 этажа - всё получится, но, поскольку 14*15/2 = 105, то интуитивно кажется, что можно как-то улучшить результат Тогда пытаемся начать с 13, но 13*14/2 = 91, и у нас ничего не выходит... ![]() Что делать ? ![]() |
||
|
Posted: 01-03-2006, 11:53
(post 15, #559004)
|
||
Докопаемся до истины! Group: Members Posts: 935 Warn:0% ![]() |
Например, усмотреть, что вышеуказанное функциональное уравнение выполнено для вот такой F(N): { для n>1 выполнено F( n(n+1)/2 - 1 ) = n, а для во всех остальных N имеет место F(N)=F(N-1) } и показать, что решение у этого уравнения единственно (что просто) ![]() Edit: AAA! На самом деле F( n(n-1)/2 + 1 ) = n ![]() This post has been edited by kpot on 01-03-2006, 23:59 |
||
![]() |