[백준] 싸이클 (2526)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 처음 시작하는 N과 P가 공백을 사이에 두고 주어진다. 단, 1<=N<=1,000, 2<=P<=97이다.
» 출력
첫째 줄에 반복되는 부분에 포함된 서로 다른 숫자의 개수를 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
67 31 | 3 |
문제 풀이1
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
val (N, P) = readLine().split(" ").map { it.toInt() }
val list = mutableListOf<Int>()
while (true) {
if (list.size != 0) {
val next = (list[list.size - 1] * N) % P
if (list.contains(next)) {
println(list.size - list.indexOf(next))
break
} else {
list.add(next)
}
} else {
list.add((N * N) % P)
}
}
}