結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-02-24 01:44:51 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 4 ms / 5,000 ms |
| コード長 | 1,059 bytes |
| コンパイル時間 | 13,597 ms |
| コンパイル使用メモリ | 221,008 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-01 15:41:12 |
| 合計ジャッジ時間 | 12,747 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
package main
import (
"bufio"
"fmt"
"math"
"os"
"strconv"
)
var sc = bufio.NewScanner(os.Stdin)
var rdr = bufio.NewReaderSize(os.Stdin, 1000000)
func main() {
sc.Split(bufio.ScanWords)
n := nextInt()
fs := eratosthenes(n)
dp := make([]bool, n+1)
for i := 2; i <= n; i++ {
for _, f := range fs {
if f > i {
break
}
if !dp[i-f] && i-f > 1 {
dp[i] = true
break
}
}
}
if dp[n] {
fmt.Println("Win")
return
}
fmt.Println("Lose")
}
func nextLine() string {
sc.Scan()
return sc.Text()
}
func nextInt() int {
i, _ := strconv.Atoi(nextLine())
return i
}
func eratosthenes(n int) []int {
if n < 2 {
return []int{}
}
r := int(math.Floor(math.Sqrt(float64(n))))
list := make([]bool, n+1)
list[0], list[1] = true, true
for i := 2; i <= r; i++ {
if !list[i] {
for j := i * i; j <= n; j += i {
list[j] = true
}
}
}
l := n / int(math.Ceil(math.Log(float64(n))))
primes := make([]int, 0, l)
for i, v := range list {
if v {
continue
}
primes = append(primes, i)
}
return primes
}