37 lines
781 B
Python
37 lines
781 B
Python
#!/usr/bin/python
|
|
|
|
# Let p(n) represent the number of different ways in which n coins can be separated into piles.
|
|
# For example, five coins can be separated into piles in exactly seven different ways, so p(5)=7.
|
|
#
|
|
# OOOOO
|
|
# OOOO O
|
|
# OOO OO
|
|
# OOO O O
|
|
# OO OO O
|
|
# OO O O O
|
|
# O O O O O
|
|
#
|
|
# Find the least value of n for which p(n) is divisible by one million.
|
|
|
|
from projecteuler import partition_fn, timing
|
|
|
|
|
|
@timing
|
|
def p078():
|
|
N = 1000000
|
|
|
|
partitions = [0] * N
|
|
|
|
i = 0
|
|
|
|
# Using the partition function to calculate the number of partitions, giving the result modulo N.
|
|
while partition_fn(i, partitions, N) != 0:
|
|
i = i + 1
|
|
|
|
print('Project Euler, Problem 78')
|
|
print(f'Answer: {i}')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
p078()
|