比赛 CSP2022普及组 评测结果 AAAAAAAAAA
题目名称 解密 最终得分 100
用户昵称 yuan 运行时间 1.248 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-10-29 16:22:11
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
//判断一元二次函数是否有正整数解 
int main()
{
	freopen("csp2022pj_decode.in","r",stdin);
	freopen("csp2022pj_decode.out","w",stdout);
	ll k,p,q,m,n,e,d,flag;
	cin>>k;
	for(int i=1;i<=k;i++)
	{
		cin>>n>>e>>d;
		m = n - e * d + 2;
		ll d = m * m - n - n - n - n;
		flag = 1;
		if(d<0 ) flag = 0;//无实数根 
		if(d>=0)
		{
			ll x=sqrt(1.0*d);
			if(x * x != d ) flag = 0;//无整数根 
		}
		if(d>=0 && flag==1)
		{
			p = (m + (ll)sqrt(1.0*d))/2;
			q = (m - (ll)sqrt(1.0*d))/2;
			if(!(p>0 && q>0)) flag = 0;
		}
		if(flag)
		{
			if(p>q)
			{
				ll t;
				t = p;p = q;q = t;
			}
			cout<<p<<' '<<q<<endl; 
		}
		else
			cout<<"NO"<<endl;
	}
	return 0;
}