[백준] 곱셈 (1629)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.
» 출력
첫째 줄에 A를 B번 곱한 수를 C로 나눈 나머지를 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
10 11 12 | 4 |
문제 풀이1
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
println(
readLine()
.split(" ")
.map { it.toLong() }
.let { pow(it[0], it[1], it[2]) }
)
}
fun pow(A: Long, exp: Long, C: Long): Long {
if (exp == 1L) return A % C
val temp = pow(A, exp / 2L, C)
return if (exp % 2L == 1L) {
(temp * temp % C) * A % C
} else {
temp * temp % C
}
}