28 lines
589 B
Text
28 lines
589 B
Text
|
|
F partitions(n)
|
|||
|
|
V p = [BigInt(1)] [+] [BigInt(0)] * n
|
|||
|
|
L(i) 1 .. n
|
|||
|
|
V k = 0
|
|||
|
|
L
|
|||
|
|
k++
|
|||
|
|
V j = (k * (3 * k - 1)) I/ 2
|
|||
|
|
I j > i
|
|||
|
|
L.break
|
|||
|
|
I k [&] 1
|
|||
|
|
p[i] += p[i - j]
|
|||
|
|
E
|
|||
|
|
p[i] -= p[i - j]
|
|||
|
|
j = (k * (3 * k + 1)) I/ 2
|
|||
|
|
I j > i
|
|||
|
|
L.break
|
|||
|
|
I k [&] 1
|
|||
|
|
p[i] += p[i - j]
|
|||
|
|
E
|
|||
|
|
p[i] -= p[i - j]
|
|||
|
|
R p[n]
|
|||
|
|
|
|||
|
|
print(‘Partitions: ’(0.<15).map(x -> partitions(x)))
|
|||
|
|
|
|||
|
|
V start = time:perf_counter()
|
|||
|
|
print(partitions(6666))
|
|||
|
|
print(time:perf_counter() - start)
|