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()