만드는 중입니다

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

최대 사인값

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

요약
정수 a, b, p, q가 주어질 때 f(x) = |sin(p/q π x)|를 최대로 하는 a 이상 b 이하의 가장 작은 정수 x를 구합니다.
난이도

보통10점 중 7점

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

문제

정수 aa, bb, pp, qq가 주어진다. 함수 f(x)=∣sin⁡(pqπx)∣f(x) = |\sin(\frac{p}{q} \pi x)|를 정의한다. a≤x≤ba \le x \le b를 만족하는 정수 xx 중에서 f(x)f(x)를 최대로 하는 가장 작은 정수 xx를 구한다.

입력

첫 줄에 테스트 케이스의 개수 tt (1≤t≤1001 \le t \le 100)가 주어진다. 각 테스트 케이스는 한 줄이며, 정수 aa, bb, pp, qq (0≤a≤b≤1090 \le a \le b \le 10^{9}, 1≤p,q≤1091 \le p, q \le 10^{9})가 주어진다.

출력

각 테스트 케이스마다 f(x)f(x)를 최대로 하는 가장 작은 정수 xx를 한 줄에 하나씩 출력한다.

힌트

첫 번째 테스트 케이스에서 f(0)=0f(0) = 0, f(1)=f(2)≈0.866f(1) = f(2) \approx 0.866, f(3)=0f(3) = 0이다. 두 번째 테스트 케이스에서 f(55)≈0.999969f(55) \approx 0.999969이며, 이는 모든 후보 중 가장 큰 값이다.

예제1

  1. 예제 1

    입력
    2
    0 3 1 3
    17 86 389 995
    
    예상 출력
    1
    55