문제 링크입니다: https://www.acmicpc.net/problem/2526
2526번: 싸이클
두 자연수 N과 P를 가지고 다음 과정을 거쳐서 나오는 숫자들을 차례대로 출력해보자. 처음 출력하는 숫자는 N이고, 두 번째 이후 출력하는 숫자들은 N을 곱하고 P로 나눈 나머지를 구하는 과정을 반복하여 구한다. 즉, 먼저 N에 N을 곱하고, 이 수를 P로 나눈 나머지를 두 번째에 출력한다. 다음에는 이 나머지에 N을 곱하고 P로 나눈 나머지를 출력한다. 다음에는 이 나머지에 N을 곱한 후 P로 나눈 나머지를 출력한다. 이 과정을 계속 반복해보면 출력
www.acmicpc.net
똑같은 숫자가 2번 이상 나오면 싸이클에 포함되어 있다고 간주하면 되는 문제였습니다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
const int MAX = 1000 + 1; | |
int N, P; | |
int visited[MAX]; | |
void func(int num) | |
{ | |
if (++visited[num] <= 2) | |
{ | |
func(num * N % P); | |
} | |
} | |
int main(void) | |
{ | |
ios_base::sync_with_stdio(0); | |
cin.tie(0); | |
cin >> N >> P; | |
func(N); | |
int result = 0; | |
for (int i = 0; i < P; i++) | |
{ | |
if (visited[i] >= 2) | |
{ | |
result++; | |
} | |
} | |
cout << result << "\n"; | |
return 0; | |
} |


개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2531번 회전초밥 (0) | 2020.04.26 |
---|---|
백준 2530번 인공지능 시계 (0) | 2020.04.26 |
백준 14916번 거스름돈 (0) | 2020.04.24 |
백준 5568번 카드 놓기 (0) | 2020.04.21 |
백준 17609번 회문 (0) | 2020.04.20 |