求问大佬此处有无错误
#include<bits/stdc++.h>
using namespace std;
long long T;
int main(){
cin>>T;
while(T--){
long long n,e,d;
cin>>n>>e>>d;
long long p1=sqrt((n-e*d+2)*(n-e*d+2)-4*n),p2=n-e*d+2;
long long p=(p1+p2)/2;
long long q=p2-p;
if(p*q==n&&e*d==(p-1)*(q-1)+1&&p>=0&&q>=0){
cout<<min(p,q)<<" "<<max(p,q)<<endl;
}
else{
cout<<"NO"<<endl;
}
}
return 0;
}
根据我们班同学的说法,((n-ed+2)(n-ed+2)-4n)无法判断是否为正数,会出问题。
但我编样例发现没有问题。
求大佬指教Orz。