#include<bits/stdc++.h>
using namespace std;
int gcd(int p,int q)
{
if(p==0)
return 1;
p=abs(p);
q=abs(q);
if(p<q)
swap(p,q);
if(p%q==0)
return q;
else
return gcd(q,p%q);
}
int fenjie(int a)
{
for(int i=sqrt(a);i>=2;i--)
if(a%(i*i)==0)
return i;
return 1;
}
struct real_number{
int q1_q,q1_p,q2_q,q2_p,r;
}ans,ans1;
void uqe1(int a,int b,int c,int delta)
{
if(a<0)
{
ans1.q1_p=-b-sqrt(delta);
ans1.q1_q=2*a;
}
else
{
ans1.q1_p=-b+sqrt(delta);
ans1.q1_q=2*a;
}
return;
}
void uqe2(int a,int b,int c,int delta)
{
ans1.q1_p=-b;
ans1.q1_q=2*a;
ans1.q2_q=2*a;
ans1.r=delta;
ans1.q2_p=fenjie(ans1.r);
ans1.r/=(ans1.q2_p*ans1.q2_p);
return;
}
int delta(int a,int b,int c)
{
return b*b-4*a*c;
}
int main()
{
int t,m;
cin>>t>>m;
for(int i=0;i<t;i++)
{
int a,b,c;
cin>>a>>b>>c;
int delta1=delta(a,b,c);
if(delta1<0)
{
cout<<"NO"<<endl;
continue;
}
double delta_sqrt=sqrt(delta(a,b,c));
if(delta_sqrt==int(delta_sqrt))
{
uqe1(a,b,c,delta1);
ans=ans1;
int gcdq1=gcd(ans.q1_p,ans.q1_q);
ans.q1_p/=gcdq1;
ans.q1_q/=gcdq1;
if(ans.q1_q<0)
ans.q1_p=-ans.q1_p,ans.q1_q=-ans.q1_q;
if(ans.q1_q==1)
cout<<ans.q1_p<<endl;
else
cout<<ans.q1_p<<"/"<<ans.q1_q<<endl;
}
else
{
uqe2(a,b,c,delta1);
ans=ans1;
int gcdq1=gcd(ans.q1_p,ans.q1_q);
int gcdq2=gcd(ans.q2_p,ans.q2_q);
ans.q1_p/=gcdq1;
ans.q1_q/=gcdq1;
ans.q2_p/=gcdq2;
ans.q2_q/=gcdq2;
if(ans.q1_q<0)
ans.q1_p=-ans.q1_p,ans.q1_q=-ans.q1_q;
if(ans.q2_q<0)
ans.q2_q=-ans.q2_q;
if(ans.q1_p!=0)
{
if(ans.q1_q==1)
cout<<ans.q1_p<<"+";
else
cout<<ans.q1_p<<"/"<<ans.q1_q<<"+";
}
if(ans.q2_p==1&&ans.q2_q==1)
cout<<"sqrt("<<ans.r<<")"<<endl;
else if(ans.q2_q==1)
cout<<ans.q2_p<<"*"<<"sqrt("<<ans.r<<")"<<endl;
else if(ans.q2_p==1)
cout<<"sqrt("<<ans.r<<")/"<<ans.q2_q<<endl;
else
cout<<ans.q2_p<<"*sqrt("<<ans.r<<")/"<<ans.q2_q<<endl;
}
}
return 0;
}
这是赛时代码 有点屎山别喷