結果

問題 No.47 ポケットを叩くとビスケットが2倍
ユーザー ichibanshiboriichibanshibori
提出日時 2016-09-29 14:53:49
言語 Scala(Beta)
(3.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 595 bytes
コンパイル時間 5,167 ms
コンパイル使用メモリ 225,220 KB
最終ジャッジ日時 2024-04-27 02:23:15
合計ジャッジ時間 5,542 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
-- [E006] Not Found Error: Main.scala:29:12 ------------------------------------
29 |		val num = readLine().toLong
   |		          ^^^^^^^^
   |		          Not found: readLine
   |
   | longer explanation available when compiling with `-explain`
1 error found

ソースコード

diff #

object Main {
	
	def countBinNumDigits(num:Long) = {
		assert (num >= 0L)

		@scala.annotation.tailrec
		def loop (num:Long) (result:Int) :Int = {
			if (num == 0L) result
			else {
				val (nextNum, nextResult) =
					(num >> 1, result + 1)
				loop (nextNum) (nextResult)
			}
		}
		loop (num) (0)
	}

	def countHit(num:Long) = {
		assert (num > 0L)
		
		val cntHit = countBinNumDigits(num) - 1
		val rem = num - (1L << cntHit)
		
		if (rem == 0) cntHit
		else cntHit + 1
	}
	
	def main(args: Array[String]): Unit = {
		val num = readLine().toLong
		val ans = countHit(num)
		println(ans)
	}
}
0