Задачка про стоэтажное здание

и задачки для интервью.
Brat Levon
Уже с Приветом
Posts: 275
Joined: 26 Jul 2001 09:01
Location: Stamford, CT

Задачка про стоэтажное здание

Post by Brat Levon »

Есть стоэтажное здание. У вас имеется два одинаковых куриных (для определенности [img:5629ae39c5]images/smiles/icon_smile.gif[/img:5629ae39c5]) яйца. Про здание известно, что есть этаж с максимальным номером такой, что, если скинуть с него (и с любого этажа ниже этого) яйцо не разбивается, а если подняться на этаж выше - то разобьется. Вопрос - какое минимальное количество сбрасываний гарантирует нахождение такого этажа?
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Задачка про стоэтажное здание

Post by Dmitry67 »

20 ?
Newsya
Уже с Приветом
Posts: 491
Joined: 25 Aug 2000 09:01

Задачка про стоэтажное здание

Post by Newsya »

7?
User avatar
Melkor
Уже с Приветом
Posts: 1257
Joined: 03 Oct 2001 09:01
Location: Valinor->Utumno->Angband

Задачка про стоэтажное здание

Post by Melkor »

<BLOCKQUOTE><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><HR>Originally posted by Brat Levon:
<STRONG>Есть стоэтажное здание. У вас имеется два одинаковых куриных (для определенности [img:04a094fc77]images/smiles/icon_smile.gif[/img:04a094fc77]) яйца. Про здание известно, что есть этаж с максимальным номером такой, что, если скинуть с него (и с любого этажа ниже этого) яйцо не разбивается, а если подняться на этаж выше - то разобьется. Вопрос - какое минимальное количество сбрасываний гарантирует нахождение такого этажа?</STRONG><HR></BLOCKQUOTE>

Вообще-то, я обнаружил, что эта задача, как и задача с пиратами, здесь таки да уже обсуждалась. Причем условие задачи с пиратами несколько изменено, а эта разобрана очень подробно конкретно в данной формулировке... Просто надо выбрать не "show topics from the last 45 days", а все
marinamo
Новичок
Posts: 75
Joined: 05 Oct 2000 09:01
Location: San Mateo, Ca, USA

Задачка про стоэтажное здание

Post by marinamo »

14
vladl
Уже с Приветом
Posts: 203
Joined: 29 Jun 2000 09:01
Location: Central Jersey

Задачка про стоэтажное здание

Post by vladl »

<BLOCKQUOTE><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><HR>Originally posted by Newsya:
<STRONG>7?</STRONG><HR></BLOCKQUOTE>

Nahodim max kolichestvo iteracij pri dvoichnom perebore sredi 100 elementov (etazhej), chto = 7.

[ 27-10-2001: Message edited by: vladl ]
Brat Levon
Уже с Приветом
Posts: 275
Joined: 26 Jul 2001 09:01
Location: Stamford, CT

Задачка про стоэтажное здание

Post by Brat Levon »

<BLOCKQUOTE><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><HR>Originally posted by vladl:
<STRONG>
Nahodim max kolichestvo iteracij pri dvoichnom perebore sredi 100 elementov (etazhej), chto = 7.
</STRONG><HR></BLOCKQUOTE>

Двоичный перебор здесь, я думаю, не пойдет. Например, вы сбросили яйцо с 50-го этажа - оно разбилось, потом сбросили с 25-го - оно тоже разбилось - и что Вы дальше будете делать?

Какой алгоритм приводит к 14, я тоже не знаю. Наилучший известный мне алгоритм требует немного больше бросков.
Brat Levon
Уже с Приветом
Posts: 275
Joined: 26 Jul 2001 09:01
Location: Stamford, CT

Задачка про стоэтажное здание

Post by Brat Levon »

<BLOCKQUOTE><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><HR>Originally posted by Dmitry67:
<STRONG>20 ?</STRONG><HR></BLOCKQUOTE>

Этот ответ - самый распространенный. Но количество бросков можно уменьшить.
Drom
Уже с Приветом
Posts: 242
Joined: 03 Jan 2000 10:01
Location: TX > MA/NH > NJ/NYC

Задачка про стоэтажное здание

Post by Drom »

кажется, здесь эта задачка была. 14.
vladl
Уже с Приветом
Posts: 203
Joined: 29 Jun 2000 09:01
Location: Central Jersey

Задачка про стоэтажное здание

Post by vladl »

<BLOCKQUOTE><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><HR>Originally posted by Brat Levon:
<STRONG>

Двоичный перебор здесь, я думаю, не пойдет. Например, вы сбросили яйцо с 50-го этажа - оно разбилось, потом сбросили с 25-го - оно тоже разбилось - и что Вы дальше будете делать?

Какой алгоритм приводит к 14, я тоже не знаю. Наилучший известный мне алгоритм требует немного больше бросков.</STRONG><HR></BLOCKQUOTE>

Sorry, ja podumal, chto v sbrasivaniji jaic uchastvovalo mnogo ljudej, nu i kazhdogo po dva [img:9d1396a3d5]images/smiles/icon_smile.gif[/img:9d1396a3d5] kurinih.
fly
Новичок
Posts: 36
Joined: 21 Oct 2001 09:01
Location: Moscow > GA

Задачка про стоэтажное здание

Post by fly »

Почему не так?
1. Забираемся на 99 этаж. Если яйцо разбилось, то ответ=100, если нет, то
2. Спускаемся на 50 этаж. Бросаем. Если яйцо не разбилось, то нужно исследовать этажи с 51 по 98 =48 этажей, если да, то нужно исследовать этажи с 1 по 49=49 этажей. Это больше, поэтому
3. Спускаемся на 25 этаж. Бросаем. Если яйцо не разбилось, то нужно исследовать этажи с 26 по 49 =24 этажа, если да, то нужно исследовать этажи с 1 по 24=24 этажей, поэтому
4. Спускаемся на 13 этаж. Бросаем. Если яйцо не разбилось, то нужно исследовать этажи с 14 по 24 =11 этажей, если да, то нужно исследовать этажи с 1 по 12=12 этажей. Это больше, поэтому
5. Спускаемся на 7 этаж. Бросаем. Если яйцо не разбилось, то нужно исследовать этажи с 8 по 12 =5 этажей, если да, то нужно исследовать этажи с 1 по 6=6 этажей. Это больше, поэтому
6. Спускаемся на 4 этаж. Бросаем. Если яйцо не разбилось, то нужно исследовать этажи с 5 по 6 =2 этажа, если да, то нужно исследовать этажи с 1 по 3=3 этажа. Это больше, поэтому
7. Спускаемся на 2 этаж. Бросаем. Если яйцо не разбилось, то оно разобьется с 3 этажа, если да, то это 2 этаж, так как с первого этажа оно не разобьется по условию.
Итак ответ [img:2ab46b268a]images/smiles/icon_smile.gif[/img:2ab46b268a] требуется не более 7 тестов
[img:2ab46b268a]images/smiles/icon_smile.gif[/img:2ab46b268a]
marinamo
Новичок
Posts: 75
Joined: 05 Oct 2000 09:01
Location: San Mateo, Ca, USA

Задачка про стоэтажное здание

Post by marinamo »

<BLOCKQUOTE><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><HR>Originally posted by Brat Levon:
<STRONG>

Какой алгоритм приводит к 14, я тоже не знаю. Наилучший известный мне алгоритм требует немного больше бросков.</STRONG><HR></BLOCKQUOTE>

Бросаем с 14 этажа, если разбилось исследуем этажи с 1 по 13-й. Если не разбилось прибавляем 13 этажей и бросаем с 27. Если разбилось исследуем с 15 по 26.
Если не разбилось прибавляем 12 и бросаем с 39 и т.д. При любом раскладе кол-во попыток не будет привышать 14.
-ЭР-
Уже с Приветом
Posts: 784
Joined: 26 Oct 2001 09:01

Задачка про стоэтажное здание

Post by -ЭР- »

<BLOCKQUOTE><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><HR>Originally posted by Drom:
<STRONG>кажется, здесь эта задачка была. 14.</STRONG><HR></BLOCKQUOTE>

Хорошо иметь алгоритм, такой, что как-бы не выпало, а количество шагов всегда одинаковое. Например, я первый раз бросаю с n-го этажа, второй - с (n + n - 1) -го, третий - с (n + n + n - 2) -го, и т.д.

Тогда, какая бы ситуация не сложилась, я всегда n раз в худшем случае брошу. Допустим, мне не везет - бросаю я бросаю, а оно все не бьется и не бьется. В этом случае я поднимаюсь вот на столько этажей:

n + (n - 1) + (n -2 ) + ... (n - k - 1) и это все равно 100 (или сколько надо) где k - это сколько раэ я бросал с "реперного" этажа.

По другому это будет

nk - k*k/2 = 100

или

n = 100/k + k/2

Мы хоти минимум, поэтому считаем dn/dk = -100/k*k + 1/2 = 0 или k = 14 (не проверил, что это действительно минимум, а не максимум. но думаю, что минимум), т.е.

n = 100/14 + 14/2 = 14.

Итого: бросать надо с 14, (14+14 -1)=27, (27+14-2)= 39, и так далее со всеми остановками, пока яйцо не треснет.
vladl
Уже с Приветом
Posts: 203
Joined: 29 Jun 2000 09:01
Location: Central Jersey

Задачка про стоэтажное здание

Post by vladl »

<BLOCKQUOTE><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><HR>Originally posted by fly:
<STRONG>Почему не так?
1. Забираемся на 99 этаж. Если яйцо разбилось, то ответ=100, если нет, то
2. Спускаемся на 50 этаж. Бросаем. Если яйцо не разбилось, то нужно исследовать этажи с 51 по 98 =48 этажей, если да, то нужно исследовать этажи с 1 по 49=49 этажей. Это больше, поэтому
3. Спускаемся на 25 этаж. Бросаем. Если яйцо не разбилось, то нужно исследовать этажи с 26 по 49 =24 этажа, если да, то нужно исследовать этажи с 1 по 24=24 этажей, поэтому
4. Спускаемся на 13 этаж. Бросаем. Если яйцо не разбилось, то нужно исследовать этажи с 14 по 24 =11 этажей, если да, то нужно исследовать этажи с 1 по 12=12 этажей. Это больше, поэтому
5. Спускаемся на 7 этаж. Бросаем. Если яйцо не разбилось, то нужно исследовать этажи с 8 по 12 =5 этажей, если да, то нужно исследовать этажи с 1 по 6=6 этажей. Это больше, поэтому
6. Спускаемся на 4 этаж. Бросаем. Если яйцо не разбилось, то нужно исследовать этажи с 5 по 6 =2 этажа, если да, то нужно исследовать этажи с 1 по 3=3 этажа. Это больше, поэтому
7. Спускаемся на 2 этаж. Бросаем. Если яйцо не разбилось, то оно разобьется с 3 этажа, если да, то это 2 этаж, так как с первого этажа оно не разобьется по условию.
Итак ответ [img:28a5fec70b]images/smiles/icon_smile.gif[/img:28a5fec70b] требуется не более 7 тестов
[img:28a5fec70b]images/smiles/icon_smile.gif[/img:28a5fec70b]</STRONG><HR></BLOCKQUOTE>

Ja tozhe tak dumal, no jaic malovato [img:28a5fec70b]images/smiles/icon_sad.gif[/img:28a5fec70b] vsego dva. Esli chasto bitsja budut, to skoro issjaknut.

Return to “Головоломки”