조니와 이차방정식
시간 제한1초메모리 제한512 MB
2^32을 법으로 하는 이차 합동식 ax^2+bx+c=0이 해를 갖는지 판정한다.
문제
조니는 이제 막 이차방정식을 배웠다. 열정 넘치는 프로그래머인 그는 숙제에 도움이 될 것 같아 곧바로 다음 프로그램을 작성했다.
#include<cstdio>
int main() {
unsigned int a,b,c,x=0;
scanf("%u %u %u",&a,&b,&c);
do {
if (a*x*x+b*x+c==0) {
puts("YES");
return 0;
}
x++;
} while(x);
puts("NO");
return 0;
}
모든 계산은 부호 없는 32비트 정수로, 즉 으로 나눈 나머지 위에서 이루어진다. 이 프로그램은 를 부터 부호 없는 32비트 정수 전체에 대해 차례로 시도하면서 를 만족하는 를 찾는 즉시 YES를 출력하고, 그런 가 하나도 없으면 NO를 출력한다. 하지만 이 완전 탐색 방식은 최신 게임용 컴퓨터에서도 너무 느리다. 같은 출력을 빠르게 만들어 낼 수 있을까?
입력
첫째 줄에 테스트 케이스의 개수를 나타내는 정수 ()가 주어진다. 이어지는 개의 줄에는 각각 공백으로 구분된 세 정수 , , ()가 주어진다.
출력
각 테스트 케이스마다 를 만족하는 부호 없는 32비트 정수 가 존재하면 YES를, 존재하지 않으면 NO를 입력에 주어진 순서대로 한 줄에 하나씩 출력한다.