結果

問題 No.184 たのしい排他的論理和(HARD)
ユーザー ともきともき
提出日時 2015-06-18 14:58:08
言語 Scala(Beta)
(3.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,035 bytes
コンパイル時間 5,230 ms
コンパイル使用メモリ 226,544 KB
最終ジャッジ日時 2024-04-27 02:08:11
合計ジャッジ時間 5,943 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

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

ソースコード

diff #

import scala.io.StdIn.readLine

object Main{
  def ipow(x : Long,n : Long) : Long = {
    if(x == 0)
      1
    else if(n % 2 == 0)
      ipow(x*x,n/2)
    else
      x * ipow(x*x,n/2)
  }

  def to_bit_str(x : Long) : String = {
    val bi = (0 to 62).map((i : Int) => if ((x & (1L << i)) != 0) "1" else "0" ).reverse
    bi.map(_.toString).fold("")(_ + _)
  }

  def main(args: Array[String]){
    val n = readLine().toLong
    val a = readLine().split(" ").map(_.toLong)
    val used = scala.collection.mutable.Set[Int]()
    val MAXK = 62
    for(k <- MAXK to 0 by -1){
      val mask = 1L << k
      val usable = (v : (Long,Int)) => v match {
        case (e,i) => !used(i) && (e & mask) != 0
      }
      a.zipWithIndex.find(usable) match {
        case Some((e,i)) => {
          used += i
          for((c,h) <- a.zipWithIndex){
            if(!used(h) && ((c & mask) != 0)){
              a(h) = a(h) ^ e
            }
          }
        }
        case None => Unit
      }
    }
    println(ipow(2,a.count(_ != 0)))
  }
}
0