만드는 중입니다

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

거듭제곱 나머지 목록

시간 제한3.5초메모리 제한1024 MB

요약
소수 p와 정수 a가 주어질 때, 구간 [l, r]에 속하면서 어떤 k에 대해 a^k mod p와 같은 정수를 오름차순으로 출력합니다.
난이도

보통10점 중 6점

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

문제

pp는 소수이고 aa는 0<a<p0 < a < p인 정수이다. ak mod pa^{k} \bmod p 꼴로 나타낼 수 있는 정수 중 ll 이상 rr 이하인 것을 모두 구하라. 여기서 kk는 0 이상의 정수이다. 조건에 따라 해당하는 정수는 100개 이하이다.

입력

한 줄에 공백으로 구분된 정수 pp, aa, ll, rr이 주어진다. 제약은 0<a<p≤1090 < a < p \le 10^{9}, pp는 소수, 0≤l≤r<p0 \le l \le r < p이다.

출력

ll 이상 rr 이하의 정수 중 ak mod pa^{k} \bmod p (단, kk는 0 이상의 정수)로 나타낼 수 있는 수를 오름차순으로 출력한다. 연속한 정수는 공백으로 구분한다. 입력은 그러한 정수가 최대 100개가 되도록 주어진다.

힌트

pp는 소수이고 0<a<p0 < a < p이므로 aa는 pp의 배수가 아니다. 따라서 ak mod pa^{k} \bmod p는 결코 0이 되지 않는다. kk가 커지면 ak mod pa^{k} \bmod p의 값은 일정한 주기로 반복된다.

예제2

  1. 예제 1

    입력
    5 3 0 3
    
    예상 출력
    1 2 3
    
  2. 예제 2

    입력
    5 4 2 3
    
    예상 출력