Предмет: Информатика, автор: fkid2006

На Python и на C++! Калькулятор

Имеется калькулятор, который выполняет три операции:


прибавить к числу X единицу;

умножить число X на 2;

умножить число X на 3.

Определите, какое наименьшее число операций необходимо для того, чтобы получить из числа 1 заданное число N.


Входные данные


Программа получает на вход одно число, не превосходящее 106.


Выходные данные


Требуется вывести одно число: наименьшее количество искомых операций.


Примеры

Ввод

32718

Вывод

17


tutu007: на Ввод обязательно такие большие числа должны входить? Рекурсией такое не посчитать

Ответы

Автор ответа: 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))

Такие большие числа, что вы в примере указали, считать долго будет


fkid2006: а можно как то исправить?
fkid2006: в каком-то тесте говорит что ответ неверный
tutu007: я бессилен, моя программа не может большие числа считать
fkid2006: понятно, хоть на этом паибо)
Похожие вопросы