Автор | Сообщение |
|
Отправлено: 20.05.22 17:10. Заголовок: 5091
Непоседливый Непоседа решил сыграть в игру. Он придумал исполнителя, преобразующего числа на доске и имеющего три команды: 1. Вычесть 1 2. Вычесть 2 3. Извлечь корень Первые две команды уменьшают число на доске на 1 и 2 соответственно, третья команда — извлекает из числа квадратный корень, если число является квадратом любого числа. Программа для такого исполнителя — это последовательность команд. Сколько различных результатов можно получить из исходного числа 113 в ходе исполнения программы, содержащей ровно 17 команд? s1=set() def f(a,c): if c==17: s1.add(a) else: if type(a**0.5) == int: f(a**0.5,c+1) f(a-1,c+1) f(a-2,c+1) f(113,0) print (s1) print(len(s1)) Все время получаю 18, а в ответе 38. Что не так?
|
|
|
Новых ответов нет
[см. все]
|
|
|
| Администратор
|
Сообщение: 3552
|
|
Отправлено: 20.05.22 17:15. Заголовок: Айарпи пишет: Все вр..
Айарпи пишет: цитата: | Все время получаю 18, а в ответе 38. Что не так? |
|
Сделайте так: if a >= 0 and round(a**0.5)**2 == a: f(a**0.5,c+1)
|
|
|
|
Отправлено: 20.05.22 20:55. Заголовок: Айарпи
Спасибо, попробую
|
|
|
|