結果

問題 No.7 プライムナンバーゲーム
コンテスト
ユーザー kou_kkk
提出日時 2023-08-04 13:33:38
言語 Nim
(2.2.12 + ACL)
コンパイル:
nim --nimcache=~ --hints:off -o:a.out -d:release cpp _filename_
実行:
./a.out
結果
AC  
実行時間 6 ms / 5,000 ms
+ 929µs
コード長 714 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,950 ms
コンパイル使用メモリ 70,624 KB
実行使用メモリ 9,868 KB
最終ジャッジ日時 2026-10-11 10:54:20
合計ジャッジ時間 4,269 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 18
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import math, sequtils, strutils, sugar

let n = parseInt readLine stdin

var isPrimes = true.repeat n.succ
for i in [0, 1]:
  isPrimes[i] = false

let rn = toInt ceil sqrt toFloat n
for i in 2 .. rn:
  if not isPrimes[i]:
    continue
  
  for i2 in countup(i ^ 2, n, i):
    isPrimes[i2] = false

let primes = collect(newSeq):
  for i, v in isPrimes:
    if v: i

const
  win = 1
  lose = 0

var dp = repeat(-1, n.succ)

proc fn(v: int): int =
  result = lose
  
  for p in primes:
    if p > v:
      break
    
    let v2 = v - p
    if v2 in [0, 1]:
      continue
    
    if dp[v2] == -1:
      dp[v2] = fn v2
    
    if dp[v2] == lose:
      return win
    
if n.fn == win:
  echo "Win"
else:
  echo "Lose"
0