結果
| 問題 | No.3686 Coprime Sum |
| コンテスト | |
| ユーザー |
tomerun
|
| 提出日時 | 2026-09-06 18:35:01 |
| 言語 | Crystal (1.21.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 666 ms / 2,000 ms |
| + 730µs | |
| コード長 | 623 bytes |
| 記録 | |
| コンパイル時間 | 11,554 ms |
| コンパイル使用メモリ | 326,044 KB |
| 実行使用メモリ | 52,224 KB |
| 最終ジャッジ日時 | 2026-09-06 18:35:49 |
| 合計ジャッジ時間 | 12,790 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 10 |
ソースコード
MOD = 998244353i64
n, m = read_line.split.map(&.to_i)
k = {n, m}.min
is_prime = Array.new(k + 1, true)
mu = Array.new(k + 1, 1)
mu[0] = 0
ans = tri(n.to_i64) * tri(m.to_i64) % MOD
2.upto(k) do |i|
if is_prime[i]
(i * 2).step(to: k, by: i) do |j|
is_prime[j] = false
mu[j] *= -1
end
mu[i] *= -1
mu[i * i] = 0 if i.to_i64 * i <= k
end
if mu[i] == 0
(i * 2).step(to: k, by: i) do |j|
mu[j] = 0
end
end
ans += tri(n.to_i64 // i) * tri(m.to_i64 // i) % MOD * mu[i] * i % MOD * i
ans %= MOD
end
ans += MOD if ans < 0
puts ans
def tri(x : Int64)
x * (x + 1) // 2 % MOD
end
tomerun