Discrete Logarithm Is Not a Joke
우측 버튼을 눌러 기기를 연결해주세요.
문제 정보
이산로그가 장난이냐?
매우 어려움
유형
프로그래밍
배점
100
참여자
4
정답률
75%
2
2

[C/C++ : 10초, Java, Python : 30초]

옆동네에서 어떤 문제를 풀었던 Sait2000은 입력 범위를 늘려서 장난 아니고 이산로그를 구해야 하는 문제를 만들기로 했습니다.

M = 1018 + 31은 소수이고, g = 42는 M의 원시근입니다. 즉, g1 mod M, g2 mod M ... gM - 1 mod M은 각각 서로 다른 [1; M) 범위의 정수입니다. f(x)를 gp mod M = x를 만족하는 최소의 양의 정수 p로 정의합니다. 그러면 f는 [1; M)에서 [1; M)으로 가는 전단사함수(일대일 대응)입니다.

수열 {an}을 다음과 같이 정의합니다.

  • a0 = 960002411612632915
  • ai + 1 = f(ai)

n이 주어졌을 때, an을 찾아봅시다.


[입력조건]
첫번째 줄에 정수 n이 주어집니다. (0 ≤ n ≤ 2 × 106)


[출력조건]
an을 출력합니다.

입/출력 예시
:
공백
:
줄 바꿈
:
예시 1
입력
0
출력
960002411612632915
예시 2
입력
1
출력
836174947389522544
예시 3
입력
300300
출력
263358264583736303
예시 4
입력
1000000
출력
300
예시 5
입력
1000001
출력
60615953435770536
⋇ 입출력 형식을 잘 지켜주세요
Q&A
누구나 질문하고 답변할 수 있는 Q&A입니다. 문제를 풀며 어려웠던 부분에 대해 질문해보세요.
이 문제에 관한 질문 (0)