82
правки
Изменения
Нет описания правки
== Алгоритм решения задачи о банкомате. ==
Рассмотрим алгоритм решения приведенной выше вариации задачи о банкомате, считая, что решение существует.# Разделим имеющиеся у нас монеты на списки по номиналу (свой список для каждого номинала) и упорядочим монеты по возрастанию весов внутри списков, а списки в порядке возрастания номиналов.# Рассмотрим первый список (с монетами самого низкого номинала). Разобьем в нем все монеты на пары (1 и 2, 3 и 4 и т. д.) Заменим каждую пару монет одной новой монетой, номинал и вес которой равен сумме номиналов и весов старых. Если число монет было нечетно, то последнюю монету, которая не имеет пары, исключим из рассмотрения.# Объединим первый список со вторым так, чтобы монеты в полившемся списке остались упорядочены по весу.# Будем повторять шаги 2-3 до тех пор, пока у нас не останется один список. В нем будут содержаться монеты номиналом 1 (<tex>2^0</tex>), упорядоченные по весу. Возьмем первые <tex>N</tex> монет из списка. Это и будет ответ к задаче.