結果
| 問題 | No.3717 GCD LCM GCD |
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2026-09-17 21:04:55 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 327 ms / 2,000 ms |
| + 333µs | |
| コード長 | 800 bytes |
| 記録 | |
| コンパイル時間 | 129 ms |
| コンパイル使用メモリ | 81,408 KB |
| 実行使用メモリ | 114,688 KB |
| 最終ジャッジ日時 | 2026-09-18 20:51:46 |
| 合計ジャッジ時間 | 4,915 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 8 |
ソースコード
from collections import Counter
MOD = 998244353
LIM = 10**6
is_prime = [True] * (LIM + 1)
is_prime[0] = is_prime[1] = False
for i in range(2, LIM + 1):
if not is_prime[i]:
continue
for j in range(2 * i, LIM + 1, i):
is_prime[j] = False
primes = [i for i in range(LIM + 1) if is_prime[i]]
N, K = [int(s) for s in input().split()]
A = [int(s) for s in input().split()]
count_a = Counter(A)
ans = 1
for p in primes:
count = [0] * 30
for i in range(p, LIM + 1, p):
for j in range(30):
if p**j > LIM or i % (p**j) != 0:
break
count[j] += count_a[i]
if all(count[i] <= N - N // K for i in range(30)):
continue
ans *= p ** max(i for i in range(30) if count[i] > N - N // K)
ans %= MOD
print(ans)