結果
| 問題 | No.598 オーバーフローファンタジー |
| コンテスト | |
| ユーザー |
💕💖💞
|
| 提出日時 | 2018-03-08 10:35:16 |
| 言語 | Kotlin (2.3.20) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,126 bytes |
| 記録 | |
| コンパイル時間 | 8,755 ms |
| コンパイル使用メモリ | 468,912 KB |
| 実行使用メモリ | 56,256 KB |
| 最終ジャッジ日時 | 2026-05-14 17:06:52 |
| 合計ジャッジ時間 | 18,031 ms |
|
ジャッジサーバーID (参考情報) |
judge2_1 / judge3_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 15 WA * 5 TLE * 1 -- * 7 |
ソースコード
fun main(args:Array<String>) {
val n = readLine()!!.toInt()
val x = readLine()!!.toInt()
val a = readLine()!!.toInt()
val b = readLine()!!.toInt()
// 通常攻撃での減産
val normal = Math.ceil(x.toDouble() / a).toInt()
// 補数
val xb = java.lang.Integer.toBinaryString(x).toInt(2)
val bb = java.lang.Integer.toBinaryString(b).toInt(2)
//val searchRange = (1..normal+1).toList()
var size = normal
var mid = size/2
var cure = 0
master@while(true) {
val sum = xb + bb*mid
val sumstr = java.lang.Integer.toBinaryString(sum).padStart(n, '0')
if( sumstr[0] == '1' ) {
// start under search
for( scan in (mid downTo 0) ) {
val sum = xb + bb*scan
val sumstr = java.lang.Integer.toBinaryString(sum).padStart(n, '0')
cure = scan
if( sumstr[0] == '1' )
break@master
}
} else {
mid = (mid + size+1)/2
}
if(mid == size) {
// 探索失敗
cure = normal + 1
break@master
}
}
//println(normal)
//println(cure)
val output = listOf(normal, cure).min()
println(output)
}
💕💖💞