본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 2526 싸이클

by 까망 하르방 2021. 2. 17.
반응형

출처https://www.acmicpc.net/problem/2526

 Input 
67 31  

 Output 

3

연산과정에서 동일한 숫자가 나오는 시점에서 그 이후로는 사이클에 포함되어 있습니다.

67  25  1  5  25가 두 번 나타났으므로 이후로는 사이클이 진행됩니다.

이때, 중복되지 않은 숫자의 개수 = (연산과정에서) 중복된 숫자가 두번째 나타난 순서 - 처음 나타난 순서입니다.

25』가 중복해서 나타는 순서는 5번째와 2번째 이므로 5 - 2 = 3개


#include <stdio.h>
 
const int MAX_N = 1000;
int visited[MAX_N];
int num, N, P, ans;
int main() {
    // freopen("input.txt", "r", stdin);
    scanf("%d %d", &N, &P);
 
    int cnt = 1;
    num = N;
    visited[num] = cnt;
    while (true) {
        num = (num * N) % P;
        cnt++;
        if (visited[num]) {
            ans = cnt - visited[num];
            break;
        }
        visited[num] = cnt;
    }
 
    printf("%d\n", ans);
}

반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 10801 카드게임  (0) 2021.02.17
[BOJ] 백준 10798 세로읽기  (0) 2021.02.17
[BOJ] 백준 2567 색종이 - 2  (0) 2021.02.17
[BOJ] 백준 7575 바이러스  (0) 2021.02.17
[BOJ] 백준 10840 구간성분  (0) 2021.02.17

댓글