結果
問題 |
No.12 限定された素数
|
ユーザー |
![]() |
提出日時 | 2025-09-06 08:45:12 |
言語 | Crystal (1.14.0) |
結果 |
AC
|
実行時間 | 87 ms / 5,000 ms |
コード長 | 917 bytes |
コンパイル時間 | 13,319 ms |
コンパイル使用メモリ | 310,772 KB |
実行使用メモリ | 13,764 KB |
最終ジャッジ日時 | 2025-09-06 08:45:29 |
合計ジャッジ時間 | 15,921 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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| next unless is_prime[i] primes << i j = 2 * i while j <= M is_prime[j] = false j += i 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 { |j| now[j] = true if c[j] } if b == now candidate = primes[i + 1] - last - 2 ans = candidate if candidate > ans end end puts ans