結果
問題 | No.313 π |
ユーザー |
|
提出日時 | 2015-12-07 23:05:34 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 147 ms / 5,000 ms |
コード長 | 1,143 bytes |
コンパイル時間 | 139 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 21,008 KB |
最終ジャッジ日時 | 2024-09-14 18:32:23 |
合計ジャッジ時間 | 6,213 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 32 |
ソースコード
def compress(ps):ps, depth = adjust_to_pow2(ps)t = build_segtree(ps)return [calc_partial_sum(t, d) % 10 for d in range(depth + 1)]def adjust_to_pow2(ps):n = len(ps)depth = len(bin(n - 1)) - 2adjusted_length = 1 << depthreturn ps + [0] * (adjusted_length - n), depthdef build_segtree(ps):n = len(ps)segtree = [0] * n + psfor i in range(n - 1, 0, -1):segtree[i] = segtree[i << 1] + segtree[(i << 1) | 1]return segtreedef calc_partial_sum(t, d):return sum(t[i] for i in range(1 << d, 2 << d, 2))def detect_dif(correct, wrong):dif = correct[0] - wrong[0]idx = 0depth = len(correct) - 1for c, w in zip(correct[1:], wrong[1:]):depth -= 1if c == w:idx += 1 << depthreturn idx, difdef solve(qs, correct):wrong = compress(qs)idx, dif = detect_dif(correct, wrong)return qs[idx], (qs[idx] + dif) % 10if __name__ == '__main__':correct = [7, 9, 1, 9, 6, 8, 1, 5, 9, 8, 1, 4, 9, 4, 1, 1, 6, 1, 1]qi = input()qi = qi[0] + qi[2:]qs = list(map(int, qi))print(*solve(qs, correct))