結果
| 問題 | No.28 末尾最適化 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-12-11 23:46:00 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 899 ms / 5,000 ms |
| コード長 | 570 bytes |
| 記録 | |
| コンパイル時間 | 339 ms |
| コンパイル使用メモリ | 82,096 KB |
| 実行使用メモリ | 79,372 KB |
| 最終ジャッジ日時 | 2024-11-30 21:12:47 |
| 合計ジャッジ時間 | 1,942 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 2 |
ソースコード
def factorize(n):
f = []
for i in range(2, n + 1):
if n % i: continue
cnt = 0
while n % i == 0:
n //= i
cnt += 1
f.append((i, cnt))
return f
for _ in range(int(input())):
seed, n, k, b = list(map(int, input().split()))
x = [seed]
for i in range(n):
x.append(1 + (x[-1] ** 2 + x[-1] * 12345) % 100000009)
ret = 1e9
for p, c in factorize(b):
cnt = [0] * (n + 1)
for i, u in enumerate(x):
while u % p == 0:
cnt[i] += 1;
u //= p
cnt.sort()
ret = min(ret, sum(cnt[:k]) // c)
print(ret)