모듈러 역공학
시간 제한2초메모리 제한512 MB
소수 m과 v, x가 주어질 때 p/q가 [x, x+1)에 속하고 v와 합동이 되는 가장 작은 p와 그에 맞는 q를 구한다.
문제
경쟁 프로그래밍 문제 중에는 출력이 유리수 인 경우, 그 대신 을 출력하라고 요구하는 문제가 있다. 여기서 은 소수이다. 그런데 프로그램이 틀린 답을 낼 때 이 값을 디버깅하기는 어렵다. 을 손으로 계산하기도 힘들고, 작은 유리수에 대해서도 이 값의 크기가 아주 커질 수 있기 때문이다. 예를 들어 이다.
풀이를 빠르게 디버깅하려면 이 주어졌을 때 와 를 복원하는 프로그램을 만들고 싶다. 가능한 와 의 값은 유일하지 않지만, 범위를 좁히는 데 도움이 되는 정보가 있다. 바로 를 보통의 유리수로 해석했을 때 어떤 정수 에 대해 범위에 있다는 것이다.
세 값 , , 이 주어질 때, 이고 이며 을 만족하는 의 최솟값과 그에 대응하는 를 구하라.
입력
입력은 한 줄이며, 공백으로 구분된 세 정수 , , 이 주어진다. 여기서 , , 이고 은 소수이다.
출력
, , 을 만족하는 최소 정수 와 그에 대응하는 를 출력한다. 그러한 와 가 여러 쌍이면 가 최소인 쌍을 출력한다. 그러한 와 가 존재하지 않으면 대신 하나를 출력한다.