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

не совпадает ответ в №6174, задача 23

стас сергеев: [pre2] k = c = 0 def f(x, y, k, c): if x > y: return 0 if x == y: return 1 while k <= 7 or c == 7: return f(x + 2, y, k + 1, c) while c <= 7 or k == 7: return f(x + ((x % 10) + (x // 10)), y, k, c + 1) return f(x + 2, y, k, c) + f(x + ((x % 10) + (x // 10)), y, k, c) print(f(1, 70, 7, 7))[/pre2]

Ответов - 2

ivackov.sergey: Такой набор 222222211111111111211 брать не надо, т.к. "1" > 7.

Поляков: Вот так можно решать: [pre2] from functools import cache @cache def F( start, end, prog = "" ): if start > end: return 0 if start == end: return '1'*7 in prog and '2'*7 in prog and \ '1'*8 not in prog and '2'*8 not in prog return F( start+2, end, prog+'1' ) + \ F( start+sum(map(int, str(start))), end, prog+'2' ) print( F(1, 70) ) [/pre2]



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