이산 로그
시간 제한1초메모리 제한128 MB
소수 P, 밑 B, 목표 N이 주어질 때 B^L ≡ N (mod P)를 만족하는 가장 작은 L을 구하고, 해가 없으면 no solution을 출력한다.
문제
소수 (), 정수 (), 정수 ()가 주어졌을 때, 밑이 이고 법이 인 의 이산 로그를 구하는 프로그램을 작성하시오.
즉, 다음 조건을 만족하는 정수 을 찾으면 된다.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄로, , , 이 공백으로 구분되어 주어진다. 입력은 파일의 끝까지 계속된다.
출력
각 테스트 케이스마다 의 이산 로그를 한 줄에 출력한다. 조건을 만족하는 이 여러 개이면 그중 가장 작은 값을 출력한다. 조건을 만족하는 이 존재하지 않으면 no solution을 출력한다.
힌트
ACM-ICPC 대회에서는 자주 쓰이지 않는 페르마의 소정리(Fermat's little theorem)를 활용해야 이 문제를 풀 수 있다. 자세한 내용은 페르마의 소정리를 참고하라.