rt,有大佬能帮忙看看为什么爆零吗
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
int n,e,ans,flag;
int read()
{
char c=getchar();int x=0;
while(!isdigit(c)) c=getchar();
while(isdigit(c)) x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x;
}
void sc(int x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) sc(x/10),putchar(x%10+'0');
if(x<=9) putchar(x+'0');
}
bool check(int mid)
{
int x=n/mid;
if(n-e+2<mid+x) return true;
if(n-e+2==mid+x&&n%mid==0){ans=mid,flag=0;return true;}
if(n-e+2>mid+x) return false;
return true;
}
signed main()
{
freopen("decode.in","r",stdin);
freopen("decode.out","w",stdout);
t=read();
while(t--)
{
n=read(),e=read()*read();
if(e>n) printf("NO"),puts("");
flag=1;
int l=1,r=sqrt(n)+1;
while(l<=r)
{
int mid=(l+r)/2;
if(check(mid)){if(!flag){sc(ans),putchar(' '),sc(n/ans),puts(" ");}l=mid+1;}
else r=mid-1;
}
if(flag) printf("NO"),puts("");
}
return 0;
}