公式法90pts求调!!!
查看原帖
公式法90pts求调!!!
252687
chuyuxuan楼主2022/10/30 11:22

rt

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 1e5+10;
ll k,n[MAXN],e[MAXN],d[MAXN],p,q;
inline ll read()
{
	ll x=0,f=1;char c=getchar();
	while(!isdigit(c))
	{
		if(c=='-') f=-1;
		c=getchar();
	}
	while(isdigit(c))
	{
		x=x*10+c-'0';
		c=getchar();
	}
	return x*=f;
}
int main()
{
	k=read();
	for(int i=1;i<=k;i++)
		n[i]=read(),e[i]=read(),d[i]=read();
	for(int i=1;i<=k;i++)
	{
		ll a=n[i]-e[i]*d[i]+2;
		ll b=pow(a,2)-4*n[i];
		if(b<0) 
		{
			cout<<"NO"<<endl;
			continue;
		}
		ll b2=sqrt(b);
		if(b2*b2==b) b2=b2,b=b;
		else b2++;
		ll p=(a+b2)/2,q=a-p;
		if(p*q!=n[i]||p+q!=a)
		{
			cout<<"NO"<<endl;
			continue;
		}
		cout<<min(p,q)<<' '<<max(p,q)<<endl; 
	}
	return 0;
}
2022/10/30 11:22
加载中...