結果

問題 No.184 たのしい排他的論理和(HARD)
ユーザー ともきともき
提出日時 2015-06-18 15:03:19
言語 Scala(Beta)
(3.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,038 bytes
コンパイル時間 5,517 ms
コンパイル使用メモリ 226,700 KB
最終ジャッジ日時 2024-11-14 19:04:52
合計ジャッジ時間 6,180 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、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
          a.zipWithIndex.filter(usable).map((v) => v match {
            case (_,i) => i
          })
          .foreach((h) => a(h) = a(h) ^ e);
        }
        case None => Unit
      }
    }
    println(ipow(2,a.count(_ != 0)))
  }
}
0