50分求助!!!
查看原帖
50分求助!!!
766436
Mr_RedStone楼主2022/11/5 14:30
#include<bits/stdc++.h>
using namespace std;
int k;
int main(){
//	freopen("decode.in","r",stdin);
//	freopen("decode.out","w",stdout);
	scanf("%d",&k);
	while(k--){
		long long n,d,e;
		scanf("%lld %lld %lld",&n,&d,&e);
		long long m=n-e*d+2;
		int p,q;
		int l=0,r=m;
		bool f=0;
		while(l<=r){
			p=(l+r)/2;
			q=m-p;
			if(1ll*p*q==n){
				if(1ll*e*d==1ll*(p-1)*(q-1)+1){
					f=1;
					printf("%d %d\n",min(p,q),max(p,q));
					break;
				}
			}
			if(p*q>n){
				r=p-1;
			}
			if(p*q<n){
				l=p+1;
			}
		}
		if(!f){
			printf("NO\n");
		}
	}
	return 0;
}

为啥写二分只能五十,是这个二分哪里有问题吗, 求大佬解答!

2022/11/5 14:30
加载中...