結果
問題 | No.28 末尾最適化 |
ユーザー | cologne |
提出日時 | 2022-01-23 02:20:11 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,014 ms / 5,000 ms |
コード長 | 927 bytes |
コンパイル時間 | 157 ms |
コンパイル使用メモリ | 82,456 KB |
実行使用メモリ | 81,984 KB |
最終ジャッジ日時 | 2024-11-28 15:33:06 |
合計ジャッジ時間 | 1,768 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 44 ms
60,088 KB |
testcase_01 | AC | 1,014 ms
81,984 KB |
ソースコード
import sys input = sys.stdin.readline def solve(seed, N, K, B): factors = [] multiplicity = [] count = [] for i in range(2, B+1): if B % i == 0: factors.append(i) m = 0 while B % i == 0: B //= i m += 1 multiplicity.append(m) count.append([]) for _ in range(N+1): X = seed for i, f in enumerate(factors): c = 0 while X % f == 0: c += 1 X //= f count[i].append(c) seed = 1 + (seed*(seed+12345)) % 100000009 ans = float('inf') for i in range(len(factors)): count[i].sort() ans = min(ans, sum(count[i][:K]) // multiplicity[i]) return ans def main(): Q = int(input()) for i in range(Q): print(solve(*map(int, input().split()))) if __name__ == '__main__': main()