結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-01-05 15:59:37 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 27 ms / 5,000 ms |
| コード長 | 1,028 bytes |
| コンパイル時間 | 10,961 ms |
| コンパイル使用メモリ | 225,540 KB |
| 実行使用メモリ | 6,016 KB |
| 最終ジャッジ日時 | 2024-10-01 16:41:28 |
| 合計ジャッジ時間 | 11,859 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
package main
import "fmt"
func scan() (N int) {
fmt.Scan(&N)
return
}
func getPrimeNum(N int) (primeList []int) {
for i := 2; i < N+1; i++ {
primeList = append(primeList, i)
}
i := 2
for i*i < N+1 {
var tmpPrimeList []int
for _, p := range primeList {
if p <= i || p%i != 0 {
tmpPrimeList = append(tmpPrimeList, p)
}
}
primeList = tmpPrimeList
i++
}
return
}
func main() {
N := scan()
// N := 5
// N := 12
primeNum := getPrimeNum(N)
// fmt.Print(primeNum)
// dp[i] 自然数iが与えられた場合の結果をリストアップする 1:win 0:lose
var dp []int
for i := 0; i <= N; i++ {
dp = append(dp, 0)
}
// nDash := N
for i := 2; i <= N; i++ {
for _, p := range primeNum {
// 自然数iが与えられたとき
// 自然数iを素数pで引いても 1未満にならない && 引いた数を相手に渡しても相手が勝たない
if i-p > 1 && dp[i-p] == 0 {
dp[i] = 1
}
}
}
if dp[N] == 1 {
fmt.Print("Win")
} else {
fmt.Print("Lose")
}
}