Форум » Динамическое программирование » (№ 3608) 23 задание. » Ответить

(№ 3608) 23 задание.

FR: (№ 3608) (Е. Джобс) Исполнитель Вычислитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера: 1. Прибавить 2 2. Сделать простое Первая команда увеличивает число на экране на 2, вторая – получает ближайшее бóльшее простое число. Сколько существует программ, для которых при исходном числе 2 результатом является число 45 и при этом траектория вычислений содержит число 14 и не содержит числа 33? Написал программу, но что-то не так. Помогити... arr = [] def simple(): for i in range(2, 1000): c = 1 for z in range(2, i): c *= i % z != 0 if c: arr.append(i) simple() # Получим список простых чисел def ke(x): # Функция, возращающая ближайшее простое число if x in arr: return 0 for i in range(1, len(arr)): if arr[i] > x: return arr[i] def f(x, t): if x > t or x == 33: return 0 elif x == t: return 1 else: m = ke(x) if m: return f(x + 2, t) + f(m, t) else: return f(x + 2, t) print(f(2, 14) * f(14, 45))

Ответов - 0



полная версия страницы