想不通哪里错了,是判断相等时不能用==,而要用差小于eps吗?能否给出一个数据呢?
#include<bits/stdc++.h>
using namespace std;
int main(){
long long int k,n,e,d;
cin>>k;
for(int i=1;i<=k;i++){
cin>>n>>e>>d;
long long int t=-(e*d-2-n);
long long int derta=pow(t,2)-4*n;
if(derta<0){
cout<<"NO"<<endl;
continue;
}
else{
long long int ans1=abs(-t+sqrt(derta))/2,ans2=abs(-t-sqrt(derta))/2;
if((abs(-t+sqrt(derta))/2)==ans1||(abs(-t-sqrt(derta))/2)==ans2){
cout<<ans1<<" "<<ans2<<endl;
}
else{
cout<<"NO"<<endl;
continue;
}
}
}
return 0;
}