60分数学做法求调
查看原帖
60分数学做法求调
112375
1a2b3楼主2022/11/1 14:05
#include <bits/stdc++.h>
using namespace std;
int k,m;
long long n,d,e,f;
bool pd(long long n,long long f)
{
	long long a=1,b=f-n-2,c=n;
	long long delta=pow(b,2)-4*a*c;
	if(delta<0)return false;
	if(sqrt(delta)!=int(sqrt(delta)))
		return false;	
	delta=sqrt(delta);
	long long ans1=(-b-delta)/2,ans2=(-b+delta)/2;
	if(ans1*ans2!=n||(ans1-1)*(ans2-1)!=f-1||ans1<=0||ans2<=0)return false;
	cout<<ans1<<" "<<ans2<<endl;
	return true;
}
int main()
{
	scanf("%d",&k);
	for(int i=1;i<=k;i++)
	{
		cin>>n>>d>>e;
		f=e*d;
		bool p=pd(n,f);
		if(p==false)printf("NO\n");
	}
	return 0;
 }
2022/11/1 14:05
加载中...