我用"和一定差小积大"来二分答案,然后连样例都没过
#include<bits/stdc++.h>
using namespace std;
signed main()
{
long long _,n,d,e,sum,p,q;
scanf("%d",&_);
while (_--)
{
scanf("%d%d%d",&n,&d,&e);
sum=n-d*e+2;
long long l=1,r=sum/2,mid;
while (l<=r)
{
mid=(l+r)>>1;
if (mid*(sum-mid)<=n) l=mid+1;
else r=mid-1;
}
p=l-1,q=sum-p+1;
if (p*q==n&&(p-1)*(q-1)+1==e*d) printf("%lld %lld\n",p,q);
else printf("NO\n");
}
return 0;
}