조니와 이차방정식

아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

조니는 이제 막 이차방정식을 배웠다. 열정 넘치는 프로그래머인 그는 숙제에 도움이 될 것 같아 곧바로 다음 프로그램을 작성했다.

#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비트 정수로, 즉 2322^{32}으로 나눈 나머지 위에서 이루어진다. 이 프로그램은 xx00부터 부호 없는 32비트 정수 전체에 대해 차례로 시도하면서 ax2+bx+c0(mod232)a \cdot x^2 + b \cdot x + c \equiv 0 \pmod{2^{32}}를 만족하는 xx를 찾는 즉시 YES를 출력하고, 그런 xx가 하나도 없으면 NO를 출력한다. 하지만 이 완전 탐색 방식은 최신 게임용 컴퓨터에서도 너무 느리다. 같은 출력을 빠르게 만들어 낼 수 있을까?

입력

첫째 줄에 테스트 케이스의 개수를 나타내는 정수 tt (t104t \le 10^4)가 주어진다. 이어지는 tt개의 줄에는 각각 공백으로 구분된 세 정수 aa, bb, cc (0a,b,c<2320 \le a, b, c < 2^{32})가 주어진다.

출력

각 테스트 케이스마다 ax2+bx+c0(mod232)a \cdot x^2 + b \cdot x + c \equiv 0 \pmod{2^{32}}를 만족하는 부호 없는 32비트 정수 xx가 존재하면 YES를, 존재하지 않으면 NO를 입력에 주어진 순서대로 한 줄에 하나씩 출력한다.