Мы взяли старую задачу и немного добавили в неё современности. Решение от этого не изменилось, поэтому держите.
Один криптоинвестор и владелец золотого фонда нанял программиста, чтобы тот за неделю написал ему код для торгов на бирже. Срок небольшой, работы много, поэтому договорились так: за каждый день работы криптоинвестор платит программисту одну седьмую слитка золота. Прям натурального: берёт слиток, разрезает его как нужно и отдаёт разработчику. Слиток изначально целый, за один раз отрезается только одна часть.
❓ А теперь вопрос: на сколько минимально частей нужно разрезать этот слиток, чтобы в конце рабочего дня программист получал каждый раз одну седьмую часть золота?
Возьмём слиток и для наглядности представим, что он состоит из семи частей:

Логично предположить, что раз программист должен получать каждый день одну седьмую часть слитка, то золото надо разрезать на 7 равных частей и потратить на это 6 разрезов:

Но это неправильное решение, потому что 6 — это не минимальное количество разрезов для решения этой задачи. А какое правильное — смотрите ниже.
Возьмём всё тот же слиток, виртуально разделённый нами на 7 равных частей:

Нам нужно, чтобы программист каждый день получал одну седьмую этого слитка. Это значит, что в конце каждого дня у него должно быть на одну седьмую часть золота больше. Но это не значит, что заказчик каждый день должен давать ему ровно одну седьмую!
В первый день программист должен получить одну седьмую часть золота. Изначально у него ничего нет, поэтому первым разрезом мы отделяем от слитка ровно одну седьмую и даём ему:

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

В третий день у программиста есть две седьмых слитка, и мы даём ему одну седьмую — ту, что он дал нам вчера на сдачу:

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

В пятый день мы даём программисту снова просто одну седьмую — ту, что есть у нас с его сдачи:

В шестой день мы даём ему кусок, где две седьмых слитка, и получаем одну седьмую на сдачу:

И наконец, в седьмой день, после всей работы, мы даём ему нашу оставшуюся одну седьмую часть слитка:

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




Вам слово
Приходите к нам в соцсети поделиться своим мнением о задаче и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте: шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!