結果
問題 |
No.3186 Big Order
|
ユーザー |
![]() |
提出日時 | 2025-06-20 23:08:33 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 922 bytes |
コンパイル時間 | 216 ms |
コンパイル使用メモリ | 82,580 KB |
実行使用メモリ | 54,424 KB |
最終ジャッジ日時 | 2025-06-20 23:08:37 |
合計ジャッジ時間 | 3,988 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | TLE * 1 -- * 33 |
ソースコード
def get(a: int, b: int, c: int, d: int) -> int: res = 0 # a を d で割り切れるだけ割って、その回数を res に加える while a % d == 0: res += 1 a //= d ta = 1 for i in range(min(c, 150)): ta *= b if ta % d == 0: x = 0 while ta % d == 0: x += 1 ta //= d sub_c = c // (i + 1) sub_res = get(a * pow(b, c % (i + 1)), ta, sub_c, d) return x * sub_c + sub_res return res from math import gcd def check(a: int, b: int) -> int: g = gcd(a, b) while True: gg = gcd(a, g) if gg == 1: break a //= gg return a def main(): t = int(input()) for _ in range(t): A, B, C = map(int, input().split()) A //= check(A,C) print(get(1, A, B, C)%998244353) if __name__ == "__main__": main()