結果
問題 | No.757 チャンパーノウン定数 (2) |
ユーザー |
|
提出日時 | 2018-12-05 15:38:34 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 1,421 ms / 2,000 ms |
コード長 | 894 bytes |
コンパイル時間 | 90 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 23,244 KB |
最終ジャッジ日時 | 2024-07-19 04:25:30 |
合計ジャッジ時間 | 20,820 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 51 |
ソースコード
#!/usr/bin/env python3 def solve(b, d): # find k d = list(map(int, reversed(d))) + [ 0 ] * 10 k = 1 while True: preserved = { i: d[i] for i in [ k - 1, k ] } d[k - 1] += k d[k] -= k for i in range(k - 1, len(d) - 1): if i >= k and 0 <= d[i] < b: break else: if i >= k: preserved[i + 1] = d[i + 1] d[i + 1] += d[i] // b d[i] %= b else: for i, d_i in preserved.items(): d[i] = d_i break k += 1 # decode d to int s = d d = 0 for c in reversed(s): d = b * d + c # remaining part d -= 1 d1 = (k - 1 - d) % k return (d1 == k - 1) + (d // (b ** d1 * k)) % b if __name__ == '__main__': b = int(input()) d = input() print(solve(b, d))