题解(其他做法)
2023-07-30 21:25:28
发布于:四川
63阅读
0回复
0点赞
这个题有两种做法,一种是解方程,一种是二分,我们用二分来解这道题。
其实就是二分答案,炒鸡煎蛋,直接给代码:
#include <iostream>
using namespace std;
long long f(long long l,long long r,long long n,long long m){
while (l<r){
long long mid=(l+r)>>1;
if (mid*(m-mid)==n){
return mid;
}else if (mid*(m-mid)>n){
r=mid;
}else{
l=mid+1;
}
}
return -1;
}
int main(){
int k;
cin >> k;
for (int i=0;i<k;++i){
long long n,e,d;
cin >> n >> e >> d;
long long m=n-e*d+2;
long long r=f(1,m/2+1,n,m);
long long p,q;
if (r==-1){
cout<<"NO\n";
}else{
p=r;
q=m-p;
cout<<min(p,q)<<" "<<max(p,q)<<"\n";
}
}
return 0;
}
这里空空如也
有帮助,赞一个