結果

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

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

ソースコード

diff #

import scala.io.StdIn.readLine
import scala.util.control.Breaks

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 popcount(x : Long) : Long = {
    var ret = 0
    var xi = x
    while(xi != 0){
      xi = xi & (xi-1)
      ret = ret + 1
    }
    ret
  }

  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).sorted.distinct.reverse
    val MAXK = 62
    var i = 0
    var used = Set[Int]()
    for(k <- 0 to MAXK){
      val mask = 1L << (MAXK-k)
      val b = new Breaks
      b.breakable {
        for((e,i) <- a.zipWithIndex){
          if(!used(i) && (e & mask) != 0){
            used = used + i
            for((c,h) <- a.zipWithIndex){
              if(!used(h) && ((c & mask) != 0)){
                a(h) = a(h) ^ e
              }
            }
            // println("---------------------------------")
            // a.map(to_bit_str).foreach(println)
            // println("---------------------------------")
            b.break
          }
        }
      }
    }
    // println("---------------------------------")
    // a.map(to_bit_str).foreach(println)
    // println("---------------------------------")
    println(ipow(2,a.distinct.count(_ != 0)))
  }
}
0