韦达定理70分求调
查看原帖
韦达定理70分求调
402226
hengcoding楼主2022/10/30 10:33
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main()
{
	//#define int long long;
	//freopen("decode.in","r",stdin);
	//freopen("decode.out","w",stdout);
	/*
	构造方程:x^2-(p+q)x+pq ->解为 pq 
	*/ 
	int k; cin>>k;
	while(k--)
	{
		//int p=1;
		long long n,d,e; cin>>n>>d>>e; //n->pq
		long long m=n-d*e+2; //p+q
		long long flag=m*m-4*n; //(p-q)^2
		long long flag2=sqrt(flag);
		if(flag2*flag2!=flag)
		{
			cout<<"NO"<<endl;
		}
		else
		{
		long long x=(m+flag2)/2;
		if(x*2!=m+flag2) 
		{
			cout<<"NO"<<endl;
			//return 2;
			//continue;
		}
		else
		{
			long long x2=(m-flag2)/2;
			if(x2*2!=m-flag2) 
			{
				cout<<"NO"<<endl;
				//continue;
			}
			//cout<<x<<" "<<x2<<endl;
			else
			{
				if(x>x2) cout<<x2<<" "<<x<<endl;
				else cout<<x<<" "<<x2;
			}
		}
	}
}
	//int a; cin>>a;
	return 0;
}
2022/10/30 10:33
加载中...