求调(0分,全no)
查看原帖
求调(0分,全no)
1281242
yzy2013楼主2024/10/20 12:27
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
	ll k;
	cin>>k;
	ll n[k],e[k],d[k],p[k],q[k];
	
	for(int i=0;i<k;i++)
	{
		cin>>n[i]>>d[i]>>e[i];
	}
	 
	for(int i=0;i<k;i++)
	{
		ll p_q=n[i]+1-e[i]*d[i];
		//cout<<p_q<<" ";
		//q^2-p_q*q+ni=0
		//▲=b^2-4ac
		//若有值:(-b±根号(▲))/2a
		//b=p_q,a=1,c=ni
		ll tmp= pow(p_q,2)-4*n[i];
		//cout<<tmp<<" ";
		if(tmp<0)
		{
			p[i]=-1;
		}
		else
		{
			ll qq=(-1*p_q+sqrt(tmp))/2;
			//cout<<qq<<" ";
			ll pp=n[i]/qq;
			if(pp>=0&&qq>=0)
			{
				p[i]=min(pp,qq);
				q[i]=max(qq,pp);
			}
			else
			{
				qq=(-1*p_q-sqrt(tmp))/2;
				//cout<<qq<<" "<<endl;
				pp=n[i]/qq;
				if(pp>=0&&qq>=0)
				{
					p[i]=min(pp,qq);
					q[i]=max(qq,pp);
				}
				else
				{
					p[i]=-1;
				}
			}
		}
	}
	for(int i=0;i<k;i++)
	{
		if(p[i]==-1)
		{
			cout<<"NO"<<endl;
			continue;
		}
		cout<<p[i]<<" "<<q[i]<<endl;
	}
	return 0;
 }
2024/10/20 12:27
加载中...