#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll k,n,e,d,b;
int main(){
scanf("%lld",&k);
while(k--) {
scanf("%lld %lld %lld",&n,&e,&d);
b = n + 2 - e*d;
ll x = b*b - 4*n;
if(x < 0) printf("NO\n");
else {
ll y = sqrt(x);
//printf("%lld %lld y*y =%lld b = %lld %lld\n",x,y,y*y,b,(b - y)&1);
if((x == y*y) && ((b - y)%2 == 0)) printf("%lld %lld\n",(b-y)>>1,n/((b-y)>>1));
else printf("NO\n");
}
}
return 0;
}
这里有一个偶数的判断:
((b - y)%2 == 0)这里如果我改成:
((b - y)&1 == 0)就不行,
但是我把(b - y)&1输出看了下,确实也是0啊,怎么就不行啊??