RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00638

이산 로그를 찾아라

스페셜 저지 — 출력을 사용자 정의 프로그램으로 검사하므로 여러 정답이 인정될 수 있습니다.
Diamond IV 다이아몬드 IV
난이도
4s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

소수 \(p\)와 정수 \(a\), \(b\)가 주어진다. \(a^x \equiv b \pmod{p}\)를 만족하는 정수 \(x\)가 존재하는지 판별하고, 존재한다면 \(0 \le x < p\) 범위에서 그러한 \(x\)를 하나 출력하여라. 존재하지 않으면 \(-1\)을 출력한다.

여러 개의 질의가 주어진다. \(p\)가 크므로 \(0\)부터 차례로 시도하는 풀이는 통과할 수 없다.

제약

\(1 \le Q \le 100\)

\(2 \le p \le 10^9\), \(p\)는 소수

\(0 \le a, b < p\)

입력 형식

첫 줄에 질의의 수 \(Q\)가 주어진다.

다음 \(Q\)개의 줄에 각각 세 정수 \(p\), \(a\), \(b\)가 주어진다. \(p\)는 소수이다.

출력 형식

각 질의에 대해 \(a^x \equiv b \pmod{p}\)를 만족하는 \(x\) (\(0 \le x < p\)) 하나를, 없으면 \(-1\)을 한 줄에 출력한다.

예제 1
입력
2
13 2 8
13 2 5
출력
3
9
설명

\(2^x \equiv 8 \pmod{13}\): \(2^3 = 8\)이므로 \(x = 3\) (다른 해도 인정). \(2^x \equiv 5 \pmod{13}\): 2의 거듭제곱은 13을 법으로 1,2,4,8,3,6,12,...이며 5가 나오므로 해가 존재한다.

예제 2
입력
2
7 2 0
5 1 2
출력
-1
-1
설명

\(2^x \equiv 0 \pmod 7\)은 불가능하므로 \(-1\). \(1^x \equiv 2 \pmod 5\)\(1^x\)은 항상 1이라 불가능하므로 \(-1\).

문제 정보

riseoj 작성

출처 Original

평가 및 의견

이산 로그를 찾아라

개요
출제자 난이도 Diamond IV 다이아몬드 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

이산 로그를 찾아라

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8