31 lines
842 B
Python
31 lines
842 B
Python
import sys
|
|
from typing import Iterator
|
|
|
|
|
|
def iter_combinations(value: int, containers: list[int]) -> Iterator[tuple[int, ...]]:
|
|
if value < 0:
|
|
return
|
|
|
|
if value == 0:
|
|
yield ()
|
|
|
|
for i in range(len(containers)):
|
|
for combination in iter_combinations(
|
|
value - containers[i], containers[i + 1 :]
|
|
):
|
|
yield (containers[i],) + combination
|
|
|
|
|
|
containers = [int(c) for c in sys.stdin.read().split()]
|
|
total = 25 if len(containers) <= 5 else 150
|
|
|
|
combinations = [combination for combination in iter_combinations(total, containers)]
|
|
|
|
answer_1 = len(combinations)
|
|
print(f"answer 1 is {answer_1}")
|
|
|
|
min_containers = min(len(combination) for combination in combinations)
|
|
|
|
answer_2 = sum(1 for combination in combinations if len(combination) == min_containers)
|
|
print(f"answer 2 is {answer_2}")
|