diff options
| author | mhsn <mail@mhsn.net> | 2026-03-18 21:48:13 +0000 |
|---|---|---|
| committer | mhsn <mail@mhsn.net> | 2026-03-18 21:48:13 +0000 |
| commit | 86bac31392a76da84817eec020d2b84d099b3cc1 (patch) | |
| tree | e2ee52db59b86b914d5b4bcceb19c9b5d899fff4 /2025/02 | |
| parent | 62fe361fc42dea75deaf7ac31c0ba6ba80e26a9c (diff) | |
| download | puzzles-master.tar.gz puzzles-master.zip | |
Diffstat (limited to '2025/02')
| -rwxr-xr-x | 2025/02/python.py | 33 |
1 files changed, 0 insertions, 33 deletions
diff --git a/2025/02/python.py b/2025/02/python.py deleted file mode 100755 index a3b4d1e..0000000 --- a/2025/02/python.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python3 - - -from itertools import accumulate -from bisect import bisect_left, bisect_right -from functools import cache - -rs = [(int(a), int(b)) for r in input().split(",") for [a, b] in [r.split("-")]] -N = max(len(str(x)) for r in rs for x in r) - - -@cache -def memo(p2: bool): - ids = sorted( - { - int(str(n) * reps) - for n in range(10 ** (N // 2)) - for reps in range(2, N // len(str(n)) + 1 if p2 else 3) - } - ) - sums = list(accumulate(ids)) - return ids[1:], sums - - -def prefix_sum(a: int, b: int, ids: list[int], sums: list[int]): - return sums[bisect_right(ids, b)] - sums[bisect_left(ids, a)] - - -silver = sum(prefix_sum(*r, *memo(False)) for r in rs) -gold = sum(prefix_sum(*r, *memo(True)) for r in rs) - -print("silver:", silver) -print("gold:", gold) |
