329,4K подписчиков

Задача от Adobe, в которой ошибаются 96% решающих. Про 50 мотоциклов, которые могут проехать 100 км

26K прочитали

Не одним Гуглом едины, интересные задачи есть на собеседованиях и в другие крупные компании. Вот, например, задачка, от Adobe.

Есть 50 мотоциклов с полными баками топлива, которого хватит на 100 км езды. Как далеко можно уехать, используя эти 50 мотоциклов, учитывая то, что все они находятся изначально в одном месте.

На этом условие оригинальной задачи заканчивается и оно вводит в ступор. Потому что, если вы один, то будь у вас хоть миллион мотоциклов, вы можете ехать только на одном. И на трос мотоцикл не прицепишь, потому что он будет падать.

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

Вот теперь можно пытаться решить. Если все сразу стартанут и будут ехать до упора, то все проедут лишь 100 км. Очевидно, это не самое лучшее решение. Поэтому думаем дальше.

Кадр из фильма "Прирожденный гонщик", 2011 год. Режиссёр: Алекс Ранаривело.
Кадр из фильма "Прирожденный гонщик", 2011 год. Режиссёр: Алекс Ранаривело.

Маленькая подсказка — бензин надо переливать из одного мотоцикла в другой, чтобы лишь один уехал как можно дальше.

Очень прошу подумать самостоятельно и пока что не заглядывать в мое решение,потому что в интернете говорят, что эту задачу решают неправильно 96% решающих. Мне кажется, что задача не настолько сложная, чтобы был такой маленький процент верных ответов. Так что давайте проверим.

Решение

Старт. Изначально у нас 50 мотоциклов, все с полными баками, суммарный запас хода 50•100 км=5000 км.

Все проезжают 50 км.

1) Все мотоциклы с полупустыми баками (у оптимистов баки будут наполовину заполненные). 25 из них переливают бензин в другие 25. В итоге имеет 25 мотоциклов с полными баками и 25 с пустыми (их придется бросить). Запас хода 25•100=2500 км.

Оставшиеся 25 мотоциклов проезжают 50 км.

2) У всех полупустые баки, поэтому суммарный запас хода составляет 25•50=1250 км. 12 мотоциклов переливают свой оставшийся бензин в 12 других мотоциклов, а один так и остается с половинчатым баком. Теперь у нас 12 мотоциклов с пустыми баками (их бросаем), 12 с полными и 1 с половинчатым.

13 мотоциклов проезжают 25 км.

3) У 12 мотоциклов баки полны на три четверти, у одного — на четверть. Тот у кого, бак полон лишь на четверть, сливает весь свой бензин одному из двенадцати мотоциклистов и они едут дальше. Запас хода такой: 1•100+11•75=925 км.

12 мотоциклов проезжают 25 км.

4) У 11 мотоциклов осталось по полбака бензина, а у одного — три четверти бака. 5 мотоциклистов из числа тех, у кого по полбака, переливают свой бензин в другие 5 мотоциклов, а оставшиеся два едут дальше — без изменений. Запас хода такой: 5•100+1•75+1•50=625 км.

7 мотоциклов проезжают 25 км.

5) Теперь у пятерых бак заполнен на три четверти, у одного — половина, ещё у одного — четверть. Тот, у которого четверть, сливает свой бензин тому, у кого половина. В итоге получаем, что у шестерых бак заполнен на три четверти, а запас хода: 6•75=450 км.

6 мотоциклов проезжают 25 км.

6) У всех бак заполнен ровно на половину. Теперь трое переливают весь свой бензин оставшимся троим. Запас хода: 3•100=300 км.

3 мотоцикла проезжают 50 км.

7) У троих мотоциклов осталось по полбака топлива. Один переливает другому весь свой бензин, а ещё один ничего не делает. Вдвоем они едут дальше. И бензина у них на двоих на 1•100+1•50=150 км.

2 мотоцикла проезжают 25 км.

8) У первого три четверти бака бензина, у второго — четверть. Второй переливает первому весь свой бензин и у первого остается запас хода 100 км.

Последний мотоцикл проезжает 100 км и глохнет.

Осталось подсчитать сколько всего он проехал: 50 + 50 + 25 + 25 + 25 + 25 + 50 + 25 + 100 = 375 км.

Я опирался на то, чо у нас нет никакой точной мерной ёмкости ( в условии об этом ничего не говорится) и переливать бензин можно лишь по принципу "слил всё до капли" через трубку, которую можно оторвать от мотоцикла, который жертвует собой во имя других.

Если же мерная ёмкость есть, то, говорят, что можно немного улучшить результат и протянуть чуть дольше. Но это не точно, я не проверял. Если у вас так получилось, пишите в комментариях. А вот ещё несколько интересных задач: