Предмет: Информатика,
автор: fkid2006
На Python и на C++! Калькулятор
Имеется калькулятор, который выполняет три операции:
прибавить к числу X единицу;
умножить число X на 2;
умножить число X на 3.
Определите, какое наименьшее число операций необходимо для того, чтобы получить из числа 1 заданное число N.
Входные данные
Программа получает на вход одно число, не превосходящее 106.
Выходные данные
Требуется вывести одно число: наименьшее количество искомых операций.
Примеры
Ввод
32718
Вывод
17
tutu007:
на Ввод обязательно такие большие числа должны входить? Рекурсией такое не посчитать
Ответы
Автор ответа:
1
Ответ:
massiv=[]
def recursion(number,count,way):
global massiv
if number<count and len(way)<100:
recursion(number+1,count,way+"1")
recursion(number*2,count,way+"2")
recursion(number*3,count,way+"3")
else:
if number==count:
if len(way) not in massiv:
massiv.append(len(way))
return
recursion(1,25,"")
print(min(massiv))
Такие большие числа, что вы в примере указали, считать долго будет
Похожие вопросы
Предмет: Русский язык,
автор: demuro
Предмет: Русский язык,
автор: evaevna3m1adoc
Предмет: Русский язык,
автор: ILIAS20
Предмет: Русский язык,
автор: FedyaHGF
Предмет: Другие предметы,
автор: Kit1508