結果

問題 No.7 プライムナンバーゲーム
ユーザー noriocnorioc
提出日時 2016-01-27 00:03:35
言語 Scala(Beta)
(3.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,066 bytes
コンパイル時間 12,624 ms
コンパイル使用メモリ 221,148 KB
最終ジャッジ日時 2023-09-11 23:12:51
合計ジャッジ時間 13,205 ms
ジャッジサーバーID
(参考情報)
judge14 / judge11
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
-- [E040] Syntax Error: Main.scala:41:32 ---------------------------------------
41 |  def main(args: Array[String]) {
   |                                ^
   |                                '=' expected, but '{' found
1 error found

ソースコード

diff #

import math._
import scala.collection.mutable.ArrayBuffer

object Main {
  def sieve(n: Int): Array[Int] = {
    val ar = Array.fill(n+1)(true)
    val primes = new ArrayBuffer[Int]
    primes.append(2)
    for (i <- 3 to n by 2) {
      if (ar(i)) {
        primes.append(i)
        for (j <- i+i to n by i) {
          ar(j) = false
        }
      }
    }
    primes.toArray
  }

  def calc(turn: Int, n: Int, primes: Array[Int]): Boolean = {
    if (n <= 1) {
      return turn == 0
    }

    if (turn == 0) {
      for (x <- primes.takeWhile(e => e <= n).reverse) {
        val win = calc(1, n-x, primes)
        if (win) return true
      }
      false
    }
    else {
      for (x <- primes.takeWhile(e => e <= n).reverse) {
        val win = calc(0, n-x, primes)
        if (!win) return false
      }
      true
    }
  }

  def main(args: Array[String]) {
    val sc = new java.util.Scanner(System.in)
    val n = sc.nextInt
    val primes = sieve(n)

    if (calc(0, n, primes)) {
      println("Win")
    }
    else {
      println("Lose")
    }
  }
}
0