結果

問題 No.308 素数は通れません
ユーザー tubo28
提出日時 2015-12-01 02:36:47
言語 Ruby
(3.4.1)
結果
WA  
実行時間 -
コード長 656 bytes
コンパイル時間 71 ms
コンパイル使用メモリ 7,552 KB
実行使用メモリ 121,632 KB
最終ジャッジ日時 2024-09-14 06:19:34
合計ジャッジ時間 10,479 ms
ジャッジサーバーID
(参考情報)
judge1 / judge6
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 14 WA * 44 TLE * 2 -- * 47
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

require "prime"

def ok n,w
  stack = []
  vis = n.times.map { false }
  stack.push 1
  while stack.size != 0
    c = stack.pop
    return true if c == n
    vis[c] = true
    if c%w != 0 && !vis[c+1] && !$isprime[c+1]
      stack.push c+1
    end
    if c%w != 1 && !vis[c-1] && !$isprime[c-1]
      stack.push c-1
    end
    if c-w >= 1 && !vis[c-w] && !$isprime[c-w]
      stack.push c-w
    end
    if c+w <= n && !vis[c+w] && !$isprime[c+w]
      stack.push c+w
    end
  end
  false
end

n = gets.to_i

$isprime = n.times.map { false }
Prime.each(n) { |p| $isprime[p] = true }

Prime.each(n) do |w|
  if ok n,w
    puts w
    exit
  end
end

puts n
0