Project Euler 116

http://projecteuler.net/index.php?section=problems&id=116


これもProblem 114と同じですね。最後に全て1を除く処理をしています。

def num_ways(l, m):
    a = [ 1 ] * m
    for n in range(m, l + 1):
        a.append(a[n-m] + a[n-1])
    return a[l] - 1

L = 50
print sum(num_ways(L, m) for m in range(2, 5))