結果
| 問題 |
No.873 バイナリ、ヤバいなり!w
|
| コンテスト | |
| ユーザー |
バカらっく
|
| 提出日時 | 2019-09-05 02:26:30 |
| 言語 | Kotlin (2.1.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,692 bytes |
| コンパイル時間 | 13,459 ms |
| コンパイル使用メモリ | 457,444 KB |
| 実行使用メモリ | 138,576 KB |
| 最終ジャッジ日時 | 2024-06-24 06:40:17 |
| 合計ジャッジ時間 | 22,741 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 3 |
| other | WA * 1 TLE * 2 -- * 33 |
コンパイルメッセージ
Main.kt:4:10: warning: parameter 'args' is never used
fun main(args: Array<String>) {
^
Main.kt:9:9: warning: unnecessary non-null assertion (!!) on a non-null receiver of type List<Int>
list!!.forEach {
^
Main.kt:43:9: warning: variable 'list' is never used
val list = mutableListOf<Array<Int>>()
^
Main.kt:51:21: warning: name shadowed: list
val list = mutableListOf(idx)
^
ソースコード
import java.lang.Math.sqrt
import java.lang.StringBuilder
fun main(args: Array<String>) {
var n = readLine()!!.toInt()
var list = getList(n)!!.sortedWith(Comparator { a, b -> com(a,b) })
var prevChar = '0'
val ans = StringBuilder()
list!!.forEach {
val ret = getWord(prevChar == '0', it)
ans.append(ret)
prevChar = ret.last()
}
println(ans.toString())
}
fun com(a:Int, b:Int):Int {
if(a % 2 == 1) {
if(b % 2 == 1) {
return a.compareTo(b)
} else {
return -1
}
} else {
if(b % 2 == 0) {
return b.compareTo(a)
} else {
return 1
}
}
}
val map = mutableMapOf<Int, Array<Int>>()
fun getList(num:Int):Array<Int>? {
if(num == 1) {
return arrayOf(1)
}
if(num == 0) {
return arrayOf()
}
map[num]?.let { return it }
val lastIndex = sqrt(num.toDouble()).toInt()
val list = mutableListOf<Array<Int>>()
var len = num
var minList = Array<Int>(0, {0})
(1..lastIndex).reversed().forEach {
val ret = getList(num - it * it)
val idx = it
ret?.let {
if(it.size < len) {
val list = mutableListOf(idx)
list.addAll(it)
len = it.size
minList = list.toTypedArray()
}
}
}
if(minList.isEmpty()) {
return null
}
map[num] = minList
return minList
}
fun getWord(prevZero:Boolean, num:Int):String {
if(prevZero) {
return (1..num).map { (it - 1) % 2 }.joinToString("")
} else {
return (1..num).map { it % 2 }.joinToString("")
}
}
バカらっく