백준
백준 2526 싸이클(Java)
Park DJ
2023. 1. 18. 04:27
https://www.acmicpc.net/problem/2526
2526번: 싸이클
두 자연수 N과 P를 가지고 다음 과정을 거쳐서 나오는 수를 차례대로 출력해보자. 처음 출력하는 수는 N이고, 두 번째 이후 출력하는 수는 N을 곱하고 P로 나눈 나머지를 구하는 과정을 반복하여
www.acmicpc.net
해석 및 팁
이문제에서 n 과 p 를 입력받았을때 나머지의 개수는 최대 p-1개 이므로 크키가 p인 배열을 생성한 후 반복문을 통해 나머지의 값에 해당하는 배열의 값을 증가시킵니다. 그리고 마지막에 중복된 숫자들의 개수를 세어서 출력해주면 됩니다.
Java 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int p = sc.nextInt();
int[] arr = new int[p]; //나머지의 개수는 최대 p-1 개
int count = 0;
int num = n;
while(true) {
num = num * n % p;
arr[num]++;
if(arr[num] == 3) break;
}
for(int i=0; i<p; i++) {
if(arr[i] > 1) count++; //중복되면 count++
}
System.out.println(count);
}
}