数学40,求助
查看原帖
数学40,求助
734195
ericsheep楼主2022/10/29 20:48
#include <bits/stdc++.h>
using namespace std;
unsigned long long k,n,d,e,sum;
unsigned long long p,q,res,res1,temp,temp1,dif;
bool judge(double p,double q){
	if (p*q==n&&(p-1)*(q-1)+1==e*d&&p>0&&q>0) return true;
	else return false;
}
int main(){
	cin>>k;
	for (unsigned long long i=1;i<=k;i++){
		sum=0;
		dif=0;
		cin>>n>>d>>e;
		sum=n-e*d+2;
		if (sum<0){
			cout<<"No"<<endl;
			continue;
		}
		if ((sum*sum-4*n)<0){
			cout<<"No"<<endl;
			continue;
		}
		dif=sqrt(sum*sum-4*n);
		p=(sum+dif)/2;
		q=(sum-dif)/2;
		if (judge(p,q)) cout<<fixed<<setprecision(0)<<min(p,q)<<" "<<max(p,q)<<endl;
		else cout<<"No"<<endl;
	}
	return 0;
}
2022/10/29 20:48
加载中...