P8814 二分 60pts
WA on #1 #2 #5 #6 #9 #10 #11 #12 #15 #16
代码:
#include<bits/stdc++.h>
using namespace std;
long long k,n,e,d,ed;
int main(){
scanf("%lld",&k);
while(k--){
scanf("%lld%lld%lld",&n,&e,&d);
ed=e*d;
int flag=1;
long long l,r,mid;
if(n<n-ed+2){
l=1,r=sqrt(n);
while(l<=r){
mid=(l+r)/2;
if(mid+n/mid==n-ed+2)
break;
else if(mid+n/mid<n-ed+2)
l=mid+1;
else
r=mid-1;
}
if(n%mid==0&&mid+n/mid==n-ed+2)
printf("%lld %lld\n",mid,n/mid);
else
printf("NO\n");
}
else{
l=1,r=(n-ed+2)/2;
while(l<=r){
mid=(l+r)/2;
if(mid*(n-ed+2-mid)==n)
break;
else if(mid*(n-ed+2-mid)<n)
l=mid+1;
else
r=mid-1;
}
if(mid*(n-ed+2-mid)==n)
printf("%lld %lld\n",mid,n-ed+2-mid);
else
printf("NO\n");
}
}
return 0;
}