結果
| 問題 |
No.12 限定された素数
|
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2025-09-06 08:50:11 |
| 言語 | Crystal (1.14.0) |
| 結果 |
AC
|
| 実行時間 | 86 ms / 5,000 ms |
| コード長 | 956 bytes |
| コンパイル時間 | 12,449 ms |
| コンパイル使用メモリ | 310,412 KB |
| 実行使用メモリ | 13,768 KB |
| 最終ジャッジ日時 | 2025-09-06 08:50:27 |
| 合計ジャッジ時間 | 15,321 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 26 |
ソースコード
M = 5_000_000
n = gets.to_s.to_i
a = gets.to_s.split.map(&.to_i)
b = Array.new(10, false)
a.each { |x| b[x] = true }
is_prime = Array.new(M + 1, true)
primes = [] of Int32
(2..M).each do |i|
if is_prime[i]
primes << i
j = 2 * i
while j <= M
is_prime[j] = false
j += i
end
end
end
primes << M + 1
solve = ->(p : Int32) do
res = Array.new(10, false)
num = p
while num > 0
res[num % 10] = true
num //= 10
end
res
end
now = Array.new(10, false)
ans = -1
last = 0
(0...primes.size - 1).each do |i|
c = solve.call(primes[i])
flag = false
(0..9).each do |j|
if c[j] && !b[j]
flag = true
break
end
end
if flag
(0..9).each { |j| now[j] = false }
last = primes[i]
next
end
(0..9).each do |j|
if c[j]
now[j] = true
end
end
if b == now
candidate = primes[i + 1] - last - 2
ans = candidate if candidate > ans
end
end
puts ans
vjudge1