結果
| 問題 |
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)) - 2
adjusted_length = 1 << depth
return ps + [0] * (adjusted_length - n), depth
def build_segtree(ps):
n = len(ps)
segtree = [0] * n + ps
for i in range(n - 1, 0, -1):
segtree[i] = segtree[i << 1] + segtree[(i << 1) | 1]
return segtree
def 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 = 0
depth = len(correct) - 1
for c, w in zip(correct[1:], wrong[1:]):
depth -= 1
if c == w:
idx += 1 << depth
return idx, dif
def solve(qs, correct):
wrong = compress(qs)
idx, dif = detect_dif(correct, wrong)
return qs[idx], (qs[idx] + dif) % 10
if __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))