50求助
查看原帖
50求助
762117
快速数论变换楼主2023/3/6 22:20
#include<bits/stdc++.h>
using namespace std;
struct fcx
{
	long long n;
	long long d;
	long long e;
	double p;
	double q;
	long long m;
};
int main()
{
	long long k,ip,iq;
	cin>>k;
	fcx a[k+1];
	for(long long i=1;i<=k;i++)
	{
		cin>>a[i].n>>a[i].d>>a[i].e;
		a[i].m=a[i].n-(a[i].d*a[i].e)+2;
	}
	for(long long i=1;i<=k;i++)
	{ 
		long long drt=pow(a[i].m,2)-4*a[i].n;
		if(drt<0)
		{
			cout<<"NO"<<endl;
			continue;
		}
		long long x1=(a[i].m+sqrt(drt))/2,x2=(a[i].m-sqrt(drt))/2;
		a[i].p=min(x1,x2);
		a[i].q=max(x1,x2);
		ip=long(a[i].p);
		iq=long(a[i].q);
		if(a[i].p-ip!=0||a[i].q-iq!=0)
		{
			cout<<"NO"<<endl;
			continue;
		}
		if(a[i].p<=0||a[i].q<=0)
		{
			cout<<"NO"<<endl;
			continue;
		}
		if(a[i].p+a[i].q==a[i].m)
		{
			cout<<a[i].p<<" "<<a[i].q<<endl;
			continue;
		}
		cout<<"NO"<<endl;
	}
	return 0;
} 
2023/3/6 22:20
加载中...