結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-08-25 22:30:29 |
| 言語 | JavaScript (node v23.5.0) |
| 結果 |
AC
|
| 実行時間 | 204 ms / 5,000 ms |
| コード長 | 1,004 bytes |
| コンパイル時間 | 304 ms |
| コンパイル使用メモリ | 5,504 KB |
| 実行使用メモリ | 47,256 KB |
| 最終ジャッジ日時 | 2024-10-01 16:23:40 |
| 合計ジャッジ時間 | 2,834 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
function Main(input) {
const getPrimes = n => {
if (n < 2) return []
let list = []
let primes = []
for (let i = 0; i < n - 1; i++) {
list[i] = i + 2
}
const limit = Math.sqrt(n)
while (true) {
const num = list.shift()
primes.push(num)
list.forEach((v, i) => {
if (v % num === 0) list.splice(i, 1)
})
if (limit < num) break
}
return primes.concat(list)
}
const N = parseInt(input.trim())
const primes = getPrimes(N)
let a = [2, 3]
let win = [true, true, false, false]
for (let i = 4; i <= N; i++) {
for (let j = a.length; j < primes.length; j++) {
if (i < primes[j]) break
a[j] = primes[j]
}
b = a.map(v => i - v)
for (let k = 0; k < b.length; k++) {
if (!win[b[k]]) {
win[i] = true
break
}
}
if (!win[i]) win[i] = false
}
const result = (win[N]) ? "Win" : "Lose"
console.log(result)
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"))