結果
問題 | No.28 末尾最適化 |
ユーザー | convexineq |
提出日時 | 2021-02-18 21:14:06 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 837 ms / 5,000 ms |
コード長 | 719 bytes |
コンパイル時間 | 270 ms |
コンパイル使用メモリ | 82,560 KB |
実行使用メモリ | 77,040 KB |
最終ジャッジ日時 | 2024-09-15 02:12:15 |
合計ジャッジ時間 | 1,616 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 46 ms
58,752 KB |
testcase_01 | AC | 837 ms
77,040 KB |
ソースコード
def solve(s,n,k,b): res = [0]*(n+1) for i in range(n+1): res[i] = s s = 1+(s*s+s*12345)%100000009 ans = 100000000 for p,t in fac[b]: val = [0]*(n+1) for i,si in enumerate(res): c = 0 while si%p==0: si //= p c += 1 val[i] = c val.sort() ans = min(ans,sum(val[:k])//t) return ans fac = [[] for _ in range(37)] for b in range(2,37): for p in [2,3,5,7,11,13,17,19,23,29,31]: c = 0 bb = b while bb%p==0: c += 1 bb //= p if c: fac[b].append((p,c)) Q = int(input()) for _ in range(Q): print(solve(*map(int,input().split())))