만드는 중입니다

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

모듈러 역원

면접 대비

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

요약
소수 m과 1 이상 m 미만의 a가 주어질 때, a와 곱했을 때 m으로 나눈 나머지가 1이 되는 b를 1 이상 m 미만의 범위에서 구합니다.
난이도

쉬움10점 중 3점

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

문제

로마는 그저께 새로운 수학 연산인 모듈러 연산을 배웠다. amod⁡ma \operatorname{mod} m로 표기하며, 예를 들어 5mod⁡3=25 \operatorname{mod} 3 = 2이다. amod⁡m=ba \operatorname{mod} m = b는 a=m⋅k+ba = m \cdot k + b이고 0≤b<m0 \le b < m을 만족한다는 뜻이다(모든 수는 정수이다).

어제 로마는 수를 곱해 보다가 두 수가 모두 1이 아니어도 (a⋅b)mod⁡m=1(a \cdot b) \operatorname{mod} m = 1이 되는 경우가 있다는 것을 발견했다. 그는 이 현상에 흥미를 느껴 aa와 bb를 모듈러 mm에 대해 서로 역이 되는 수라고 이름 붙였다.

오늘 아침 로마는 소수 mm을 살펴보았다. 그는 1≤a<m1 \le a < m인 모든 aa에 대해 (a⋅b)mod⁡m=1(a \cdot b) \operatorname{mod} m = 1을 만족하는 bb가 정확히 하나 있음을 증명했다. 하지만 aa와 mm으로부터 bb를 구하는 방법은 알지 못한다. 로마를 도와주자.

입력

첫 줄에 수 aa와 mm이 주어진다 (1≤a<m≤2⋅1091 \le a < m \le 2 \cdot 10^9). 수 mm은 소수이다.

출력

(a⋅b)mod⁡m=1(a \cdot b) \operatorname{mod} m = 1을 만족하는 bb를 출력한다. bb는 1≤b<m1 \le b < m을 만족해야 한다.

예제2

  1. 예제 1

    입력
    3 7
    
    예상 출력
    5
    
  2. 예제 2

    입력
    6 23
    
    예상 출력
    4