60分,请大佬求助!
查看原帖
60分,请大佬求助!
762117
快速数论变换楼主2023/9/20 22:40
#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;
};
double x1(long long m,double dt)
{
	return (m+sqrt(dt))/2;
} 
double x2(long long m,double dt)
{
	return (m-sqrt(dt))/2;
} 
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++)
	{ 
		double drt=pow(a[i].m,2)-4*a[i].n;
		if(drt<0)
		{
			cout<<"NO"<<endl;
			continue;
		}
		a[i].p=min(x1(a[i].m,drt),x2(a[i].m,drt));
		a[i].q=max(x1(a[i].m,drt),x2(a[i].m,drt));
		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)
		{
			printf("%.0lf %.0lf\n",a[i].p,a[i].q);
			continue;
		}
		cout<<"NO"<<endl;
	}
	return 0;
} 
2023/9/20 22:40
加载中...