結果
| 問題 |
No.2287 ++ -- *=a /=a
|
| コンテスト | |
| ユーザー |
sapphire__15
|
| 提出日時 | 2023-02-21 21:26:03 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,051 bytes |
| コンパイル時間 | 216 ms |
| コンパイル使用メモリ | 81,912 KB |
| 実行使用メモリ | 80,872 KB |
| 最終ジャッジ日時 | 2024-11-17 19:08:05 |
| 合計ジャッジ時間 | 7,981 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 24 WA * 3 |
ソースコード
from collections import defaultdict
from typing import List, Tuple, Dict
def solve(x: int, y: int, a: int) -> int:
fromX: List[Tuple[int, int]] = []
c: int = 0
while 0 < x:
fromX.append((x, c))
x //= a
c += 1
fromX.append((x, c))
def toX(n: int) -> int:
return min(map(lambda b: abs(b[0] - n) + b[1], fromX))
d: Dict[int, int] = defaultdict(lambda: 1e9)
d[y] = 0
ans: int = 1e9
while 0 < len(d):
tmp: Dict[int, int] = defaultdict(lambda: 1e9)
for i, j in d.items():
ans = min(ans, toX(i) + j)
if i <= 1:
continue
k, r = i // a, i % a
if i % a == 0:
tmp[k] = min(tmp[k], j + 1)
else:
tmp[k] = min(tmp[k], j + r + 1)
tmp[k + 1] = min(tmp[k + 1], j + (a - r) + 1)
d = tmp
return ans
def main():
T = int(input())
for _ in range(T):
print(solve(*map(int, input().split())))
if __name__ == '__main__':
main()
sapphire__15