def solve(): """ http://en.wikipedia.org/wiki/Partition_(number_theory) """ from prime import divisors_sigma p = [1] for n in range(1,N+1): p.append( 1./n*sum(divisors_sigma(n-k)*p[k] for k in range(0,n)) ) return int(p[-1]-1)
def slow(): """ http://en.wikipedia.org/wiki/Partition_(number_theory) """ from prime import divisors_sigma p = [1] n = 1 while True: p.append( 1./n*sum(divisors_sigma(n-k)*p[k] for k in range(0,n)) ) #print n, p[-1] if n > 1 and p[-1]%N == 0: break n += 1 return n, int(p[-1])