本人代码:
#include<bits/stdc++.h>
using namespace std;
int m,t,a[5001],b[5001],c[5001],i,dt,j,jq2=1,t2=1;
void nuqe(int a,int b,int c)
{
int gys1,gys2;
dt=b*b-4*a*c;
while(t2!=0)
{
t2=0;
for(j=2;j<=sqrt(dt);j++)
if(dt%(j*j)==0)
{
dt/=(j*j);
jq2*=j;
t2=1;
}
}
gys1=__gcd((-1*b),(2*a));
gys2=__gcd(jq2,(2*a));
if(b!=0&&(-1*b)%(2*a)!=0)
if(2*a/gys1>=0)
cout<<(-1*b)/gys1<<"/"<<(2*a)/gys1<<"+";
else
cout<<"-"<<(-1*b)/gys1<<"/"<<-1*(2*a)/gys1<<"+";
else
if(b!=0)
cout<<-1*b/2/a<<"+";
if(jq2%(2*a)!=0&&jq2/gys2!=1)
if((2*a)/gys2>=0)
cout<<jq2/gys2<<"*sqrt("<<dt<<")/"<<(2*a)/gys2<<endl;
else
cout<<"-"<<jq2/gys2<<"*sqrt("<<dt<<")/"<<-1*(2*a)/gys2<<endl;
else
if(jq2%(2*a)!=0)
if((2*a)/gys2>=0)
cout<<"sqrt("<<dt<<")/"<<(2*a)/gys2<<endl;
else
cout<<"-"<<"sqrt("<<dt<<")/"<<-1*(2*a)/gys2<<endl;
else
cout<<jq2/gys2<<"*sqrt("<<dt<<")"<<endl;
}
void fuqe(int a,int b,int c)
{
int gys;
if(floor(sqrt(b*b-4*a*c))==sqrt(b*b-4*a*c))
{
dt=b*b-4*a*c;
if(((-1*b+(int)(sqrt(dt)))%(2*a))==0)
cout<<(-1*b+sqrt(dt))/(2*a)<<endl;
else
{
gys=__gcd((-1*b+(int)(sqrt(dt))),(2*a));
if((2*a)/gys>=0)
cout<<(-1*b+sqrt(dt))/gys<<"/"<<(2*a)/gys<<endl;
else
cout<<"-"<<(-1*b+sqrt(dt))/gys<<"/"<<-1*(2*a)/gys<<endl;
}
}
else
nuqe(a,b,c);
}
void uqea(int a,int b,int c)
{
if(b*b-4*a*c<0)
cout<<"NO"<<endl;
else
{
if(a<0)
{
a=-1*a;
b=-1*b;
c=-1*c;
}
fuqe(a,b,c);
}
}
int main()
{
freopen("uqe.in","r",stdin);
freopen("uqe.out","w",stdout);
cin>>t>>m;
for(i=1;i<=t;i++)
{
cin>>a[i]>>b[i]>>c[i];
uqea(a[i],b[i],c[i]);
jq2=1;
}
return 0;
}