만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

균등 생성기

면접 대비

시간 제한1초메모리 제한128 MB

요약
각 STEP과 MOD 쌍에 대해 seed(x+1) = (seed(x) + STEP) mod MOD가 0부터 MOD-1까지 모든 값을 한 번씩 생성하는지 판정한다. 이는 gcd(STEP, MOD) = 1일 때 성립한다.
난이도

쉬움10점 중 3점

유형
정수론, 수학, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

컴퓨터 시뮬레이션에는 종종 난수가 필요합니다. 유사 난수(pseudo-random number)를 만드는 방법 중 하나는 다음과 같은 형태의 함수를 사용하는 것입니다.

seed(x+1) = [ seed(x) + STEP ] % MOD
where "%" is the modulus operator.

이 함수는 0 이상 MOD-1 이하의 유사 난수(seed)를 생성합니다. 이런 형태의 함수가 가진 한 가지 문제점은 항상 같은 패턴을 반복해서 만들어 낸다는 것입니다. 이 영향을 최소화하려면 STEP과 MOD 값을 신중하게 골라야 하며, 잘 고르면 0부터 MOD-1까지의 모든 값이 고르게(균등하게) 나타나도록 할 수 있습니다.

예를 들어 STEP=3, MOD=5이면 함수는 0, 3, 1, 4, 2 라는 수열을 반복해서 만들어 냅니다. 이 경우 함수를 MOD번 반복하면 0부터 MOD-1까지의 모든 수가 정확히 한 번씩 생성됩니다. 같은 seed(x)가 나오면 항상 같은 seed(x+1)이 나온다는 함수의 성질 때문에, 어떤 함수가 0부터 MOD-1까지의 모든 수를 생성한다면 그 함수는 MOD번마다 유사 난수를 균등하게 생성한다는 뜻이 됩니다.

반면 STEP=15, MOD=20이면 함수는 (시작 seed가 0일 때) 0, 15, 10, 5 를 생성합니다. 시작 seed를 무엇으로 정하더라도 0부터 MOD-1까지의 모든 수를 만들어 낼 수 없으므로, 이는 STEP과 MOD를 잘못 고른 예입니다.

주어진 STEP과 MOD가 유사 난수를 균등하게 생성하는지 판정하세요.

입력

입력은 여러 줄로 이루어집니다. 각 줄에는 STEP과 MOD를 나타내는 두 정수가 이 순서대로 주어집니다 (1≤STEP,MOD≤1000001 \le STEP, MOD \le 100000). 입력은 파일의 끝(EOF)까지 계속됩니다.

출력

입력의 각 줄마다 다음 형식으로 한 줄을 출력합니다. STEP 값을 폭 10칸에 오른쪽 정렬하여(1~10번째 칸) 출력하고, 이어서 MOD 값을 폭 10칸에 오른쪽 정렬하여(11~20번째 칸) 출력하며, 21번째 칸은 공백으로 두고 22번째 칸부터 판정 결과를 왼쪽 정렬로 출력합니다. STEP과 MOD를 골랐을 때 MOD개의 수를 생성하는 동안 0부터 MOD-1까지의 모든 수가 만들어지면 "Good Choice"를, 그렇지 않으면 "Bad Choice"를 출력합니다.

연속한 두 결과 사이에는 빈 줄 하나를 넣어 구분합니다. 마지막 결과 뒤에는 빈 줄을 추가로 출력하지 않습니다.

예제5

  1. 예제 1

    입력
    3 5
    15 20
    63923 99999
    
    예상 출력
             3         5 Good Choice
    
            15        20 Bad Choice
    
         63923     99999 Good Choice
    
  2. 예제 2

    입력
    1 1
    
    예상 출력
             1         1 Good Choice
    
  3. 예제 3

    입력
    2 4
    
    예상 출력
             2         4 Bad Choice
    
  4. 예제 4

    입력
    7 21
    7 22
    
    예상 출력
             7        21 Bad Choice
    
             7        22 Good Choice
    
  5. 예제 5

    입력
    1 100000
    
    예상 출력
             1    100000 Good Choice