http://projecteuler.net/index.php?section=problems&id=115
前問とほとんど変わりません。
from itertools import count N = 10 ** 6 M = 50 a = [ 1 ] * M for n, v in ((n, 1 + sum(a[k] for k in range(n - M) + [ n - 1 ])) for n in count(M)): if v > N: print n break a.append(v)