結果

問題 No.7 プライムナンバーゲーム
ユーザー バカらっく
提出日時 2019-08-29 23:27:17
言語 Kotlin
(2.1.0)
結果
AC  
実行時間 866 ms / 5,000 ms
コード長 912 bytes
コンパイル時間 9,880 ms
コンパイル使用メモリ 435,096 KB
実行使用メモリ 103,020 KB
最終ジャッジ日時 2024-10-01 16:25:16
合計ジャッジ時間 20,342 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 17
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.kt:1:10: warning: parameter 'args' is never used
fun main(args: Array<String>){
         ^

ソースコード

diff #

fun main(args: Array<String>){
    val num = readLine()!!.toInt()
    primeList = getPrimeList(num)

    val ans = if(canWin(num)) "Win" else "Lose"
    println(ans)
}

var primeList = listOf<Int>()

val dic = mutableMapOf<Int, Boolean>()
fun canWin(num:Int): Boolean {
    if(num in (2..3)) {
        return false
    }
    dic[num]?.let { return it }

    var ret = false
    primeList.filter { it < num - 1 }.forEach{
        if(!canWin(num-it)) {
            ret = true
        }
    }
    dic[num] = ret
    return ret
}

fun getPrimeList(maxNum:Int):List<Int> {
    val flags = arrayOfNulls<Boolean>(maxNum+1)
    val list = mutableListOf<Int>()
    for (i in 2..maxNum) {
        if(flags[i] != null && flags[i]!!) {
            continue
        }
        val maxIndex = maxNum/i
        for(j in 1..maxIndex) {
            flags[i*j] = true
        }
        list.add(i)
    }
    return list.toList()
}
0