https://www.acmicpc.net/problem/14928
더보기
이 문제는 BigInteger로 풀면 시간초과가 난다.
그래서 이 문제는 이렇게 푸는게 아니라 모듈로 연산의 규칙을 이용해서 푼다.
(a mod c + b mod c) mod c = (a+b) mod c
그러니까, 23을 10으로 나눈다 가정하면, (20 % 10 + 3 % 10) % 10 = (0 + 3) % 10 = 3 은 23 % 10 = 3과 일치한다.
따라서 이들을 따로따로 떼어 나누면 해당 모듈로 연산의 규칙을 따를 수 있다. 즉, 한자리씩 떼어 10의 자리씩 연산한다.
이를 코드로 보면
fun main(args: Array<String>) {
question14928()
}
fun question14928() {
var number = readln()
var remain = 0
for (i in number.indices) {
remain = (remain * 10 + (number[i].toString().toInt())) % 20000303
}
println(remain)
}
* 10을 통해 자릿수를 늘려간다.
반응형
'스터디(beakjoon)' 카테고리의 다른 글
Kotlin] 백준 15128번 문제 풀이 (0) | 2024.05.17 |
---|---|
Kotlin] 백준 11282번 풀이 (0) | 2024.05.14 |
Kotlin] 백준 1271번 풀이 (0) | 2024.04.25 |
Kotlin] 백준 17427번 풀이 (0) | 2024.04.24 |
Kotlin] 백준 1748번 문제 풀이 (0) | 2024.04.23 |