CSP-J2022解密(二分算法)
2022-12-05 18:28 作者:諷刺派數(shù)學家 | 我要投稿
#include<bits/stdc++.h>
using namespace std;
int k;
int main()
{
scanf("%d",&k);
for(int i=1;i<=k;i++)
{
long long n,d,e;
scanf("%lld %lld %lld",&n,&d,&e);
long long m=n-d*e+2;
long long r=m/2,l=1;//因為p<=q,所以我們可以只二分左部分的區(qū)間
while(l<r)
{
int mid=(l+r)/2;
if(mid*(m-mid)>=n)
{
r=mid;
}
else
{
l=mid+1;
}
}
if(l*(m-l)==n)
{
printf("%lld %lld\n",l,(m-l));
}
else
{
printf("NO\n");
}
}
return 0;
}
標簽: