結果
| 問題 |
No.756 チャンパーノウン定数 (1)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-12-14 14:18:16 |
| 言語 | Kotlin (2.1.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,799 bytes |
| コンパイル時間 | 14,322 ms |
| コンパイル使用メモリ | 438,452 KB |
| 実行使用メモリ | 56,160 KB |
| 最終ジャッジ日時 | 2024-11-20 17:17:30 |
| 合計ジャッジ時間 | 19,991 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 3 |
| other | WA * 20 |
コンパイルメッセージ
Main.kt:45:5: warning: unreachable code
return -x
^
ソースコード
/**
* You can edit, run, and share this code.
* play.kotlinlang.org
*/
import kotlin.math.*
fun main() {
println(f(190f))
println(f(191f))
println(f(192f))
println(f(3553f))
}
fun f(x: Float): Float{
println("input = " + x)
var keta=1
while(x>=numKeta(keta)){
keta++
}
println("keta = " + keta)
if(keta == 1){
return x
}else{
val to0 = numKeta(keta-1)%keta
var flag: Float
flag = x%keta-to0
if(flag < 0){
flag = keta + flag
}
val num = floor((x-numKeta(keta-1))/(keta)) +10f.pow(keta-1) //0を0として何個目か
println("0を0として何個目か : " + num)
println("no nankomeka : " + flag)
var k: Array<Float?> = arrayOfNulls(keta)
for(i in keta-1 downTo 0){
val diff = keta-(i+1)
k[i] = floor(num/10f.pow(i)) - minusNum(k, keta, diff)
}
return k[keta-1-flag.toInt()]!!
}
return -x
}
fun minusNum(k: Array<Float?>, keta:Int, diff: Int): Int{
if(diff==0){
return 0
}else if(diff<0){
println("ERROR001")
return -1
}else{
var sum: Float = 0f
for(i in 0..diff-1){
// println("in munusNum, i : " + i)
// println("in munusNum, keta-i : " + (keta-i))
sum += k[keta-(i+1)]!!*10f.pow(diff-i)
}
return sum.toInt()
}
}
fun numKeta(keta: Int): Int{ //桁までの数字の数
var sum = 0
for(i in 1..keta){
sum += forSigNumKeta(i)
}
return sum
}
fun forSigNumKeta(n: Int): Int{
if(n<=0){
println("ERROR")
return -1
}
if(n == 1){
return 10
}else{
return (9*10f.pow(n-1)*n).toInt()
}
}