[백준] 루트 (4619)(kotlin)

문제 설명

백준 4619번 문제 링크

입력 및 출력

» 입력

입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, B와 N이 주어진다. (1 ≤ B ≤ 1,000,000, 1 ≤ N ≤ 9) 입력의 마지막 줄에는 0이 2개 주어진다.

» 출력

각 테스트 케이스에 해당하는 A를 출력한다.

예제 입출력(테스트케이스)

입력 출력
4 3
5 3
27 3
750 5
1000 5
2000 5
3000 5
1000000 5
0 0
1
2
3
4
4
4
5
16

문제 풀이1

import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.math.pow

fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
    while (true) {
        val (b, n) = readLine().split(" ").map { it.toDouble() }
        if (b == 0.0 && n == 0.0) break

        var a = 1.0
        while (true) {
            if (b in a.pow(n)..(a + 1).pow(n)) {
                when {
                    b - a.pow(n) > (a + 1).pow(n) - b -> println((a + 1).toInt())
                    else -> println(a.toInt())
                }
                break
            } else {
                a++
            }
        }
    }
}