만드는 중입니다

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

거듭제곱

면접 대비

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

요약
α, β, m이 주어질 때 x + 1/x = α를 만족하는 x에 대해 x^β + 1/x^β를 m으로 나눈 나머지를 구합니다.
난이도

보통10점 중 5점

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

문제

지수 연산은 밑(base)을 지수(exponent)만큼 거듭해서 곱하는 기본적인 수학 연산이다. ana^n에서 aa는 밑, nn은 지수이며, aa를 nn번 곱한다는 뜻이다. 이 결과를 aa의 nn제곱이라고 부른다. 예를 들어 23=2×2×2=82^3=2 \times 2 \times 2=8이고 52=5×5=255^2=5 \times 5=25이다. 첫 번째 예에서 밑은 22, 지수는 33이고, 두 번째 예에서 밑은 55, 지수는 22이다. 지수 연산은 방정식을 풀거나 암호학 등 여러 분야에서 쓰인다.

RSA(Rivest-Shamir-Adleman)와 Diffie-Hellman처럼 정수론에 기반한 많은 암호 알고리즘에서는 모듈러 지수 연산이 기본 연산이다. 모듈러 지수 연산은 밑을 지수만큼 거듭제곱한 값을 모듈러스로 나눈 나머지를 구한다. 계산량은 많지만, 매우 큰 수에서도 비교적 쉽게 수행할 수 있다.

x+1x=αx+\frac{1}{x}= \alpha이며 α\alpha는 양의 정수이다. 주어진 양의 정수 β\beta와 mm에 대해 xβ+1xβ mod mx^\beta + \frac{1}{x^\beta} \bmod m을 계산하는 프로그램을 작성하라.

입력

입력은 한 줄이며, 공백으로 구분된 양의 정수 α\alpha, β\beta, mm이 주어진다. α\alpha, β\beta, mm은 모두 2642^{64}보다 작다.

출력

xβ+1xβ mod mx^\beta + \frac{1}{x^\beta} \bmod m을 출력한다. xβ+1xβx^\beta + \frac{1}{x^\beta}는 정수라고 가정해도 된다. 답이 여러 개이면 00부터 m−1m-1 범위의 값 중 어느 것을 출력해도 된다.

힌트

xx는 복소수일 수 있다. 예를 들어 α=1\alpha=1이면 xx는 1+3i2\frac{1 + \sqrt{3}i}{2} 또는 1−3i2\frac{1 - \sqrt{3}i}{2}이다. 하지만 이 문제에서 xβ+1xβx^\beta + \frac{1}{x^\beta}는 항상 정수이다.

예제4

  1. 예제 1

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

    입력
    5 4 321
    
    예상 출력
    206
    
  3. 예제 3

    입력
    3 3 333
    
    예상 출력
    18
    
  4. 예제 4

    입력
    8 8 888
    
    예상 출력
    626