結果
問題 | No.28 末尾最適化 |
ユーザー |
|
提出日時 | 2025-06-13 02:33:20 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 4,877 ms / 5,000 ms |
コード長 | 823 bytes |
コンパイル時間 | 252 ms |
コンパイル使用メモリ | 12,288 KB |
実行使用メモリ | 11,256 KB |
最終ジャッジ日時 | 2025-06-13 02:33:27 |
合計ジャッジ時間 | 5,561 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 2 |
ソースコード
import sys read=sys.stdin.buffer.read readline=sys.stdin.buffer.readline fac=[0,1] for b in range(2, 37): p=2 ps=[] bb=b while p*p<=bb: if bb%p==0: cnt=0 while bb%p==0: bb//=p cnt+=1 ps.append([p,cnt]) p+=1 if bb!=1: ps.append([bb,1]) fac.append(ps) MOD=10**8+9 for _ in range(int(readline())): seed,N,K,B=map(int,readline().split()) X=[seed] now=seed for i in range(1,N+1): now=1+(now*(now+12345))%MOD X.append(now) ans=MOD for p, cntb in fac[B]: arr=[] for xi in X: c=0 while xi%p==0: xi//=p c+=1 arr.append(c) arr.sort() ans=min(ans,sum(arr[:K])//cntb) print(ans)