#include<bits/stdc++.h>
using namespace std;
int main()
{
while(1)
{
long long a,b,c;
cin>>a>>b>>c;
long long pan = b*b-4*a*c;
if(pan<0)
cout<<"NO"<<endl;
else
{
if((long long)(sqrt(pan))*(long long)(sqrt(pan))==pan)
{
int p;
if((-b+sqrt(pan))/2/a>(-b-sqrt(pan))/2/a)
p = -b+sqrt(pan);
else
p = -b-sqrt(pan);
int q = 2*a;
if(1.0*p/q==p/q)
cout<<p/q<<endl;
else
{
int k = __gcd(p,q);
if(q/k<0){
q*=-1,p*=-1;
}
cout<<p/k<<"/"<<q/k<<endl;
}
}
else
{
if(1.0*-b/2/a!=0)
{
int k = __gcd(-b,2*a);
int p = -b/k,q = 2*a/k;
if(q<0)
q*=-1,p*=-1;
if(q==1)cout<<p<<"+";
else cout<<p<<"/"<<q<<"+";
}
int xi = 1;
if(a<0)xi*=-1;
for(int i=2;i<=1000;i++)
while(pan%(i*i)==0)
pan/=i*i,xi *= i;
double q2 = 1.0 * xi / 2 / a;
int d = 2 * a;
int k = __gcd(xi,d);
xi/=k,d/=k;
if(q2==1)cout<<"sqrt("<<pan<<")"<<endl;
else if(q2==int(q2))cout<<q2<<"*"<<"sqrt("<<pan<<")"<<endl;
else if(1/q2==int(1/q2))cout<<"sqrt("<<pan<<")/"<<1/q2<<endl;
else{
if(xi!=1)
cout<<xi<<"*sqrt("<<pan<<")/"<<d<<endl;
else cout<<"sqrt("<<pan<<")/"<<d<<endl;
}
}
}
}
return 0;
}
这份代码能AC的 只是去掉了 t,m 的输入,想自己平时做题用,求帮改成能按照格式输出两个解的。