20分,二分答案,求调!!
查看原帖
20分,二分答案,求调!!
1152035
Yang_Zirui楼主2024/8/31 12:02
#include<bits/stdc++.h>
using namespace std;
long long l,r,p,q,n,e,d,k;
bool f=true;
int main(){
	scanf("%lld",&k);
	for(int j=0;j<k;j++){
		f=true;
		scanf("%lld%lld%lld",&n,&d,&e);
		l=1;
		r=sqrt(n);
		while(l<=r){
			p=(l+r)/2;
			q=n/p;
			if(p*q==n && e*d==(p-1)*(q-1)+1){
				printf("%lld %lld\n",p,q);
				f=false;
				break;
			}else{
				if((p-1)*(q-1)+1>e*d){
					r=p-1;
				}else{
					l=p+1;
				}
			}
		}
		if(f) printf("NO\n");
	}
	return 0;
}
2024/8/31 12:02
加载中...