結果
問題 | No.782 マイナス進数 |
ユーザー |
![]() |
提出日時 | 2022-06-02 17:48:46 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 187 ms / 2,000 ms |
コード長 | 785 bytes |
コンパイル時間 | 325 ms |
コンパイル使用メモリ | 82,660 KB |
実行使用メモリ | 77,824 KB |
最終ジャッジ日時 | 2024-09-21 02:03:45 |
合計ジャッジ時間 | 6,206 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 36 |
ソースコード
import math T, B = map(int,input().split()) for _ in range(T): N = int(input()) if N == 0: print(0) continue res = '' l = int(math.log(N)/math.log(-B)) for i in range(l+2, -1, -1): p = pow(-B, i) res += str(N//p) N %= p ans = [0]*(l+10) res = res[::-1] for j in range(l+3): if int(res[j])>0: if j%2 == 0: ans[j] += int(res[j]) else: ans[j+1] += 1 ans[j] += (-B-int(res[j])) for k in range(len(ans)-2): a, b = ans[k]//(-B), ans[k]%(-B) if ans[k+1] >= a: ans[k+1] -= a else: ans[k+2] += 1 ans[k+1] += (-B-a) ans[k] = str(b) print(int(''.join(ans[:-2])[::-1]))