#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int t,m,a,b,c,del,g;
int gcd(int n,int m){
return m==0?n:gcd(m,n%m);
}
void print1(int z,int m){
int gc,f=(z*m)>0?1:-1;
z=abs(z),m=abs(m);
gc=gcd(z,m);
z/=gc,m/=gc,z*=f;
if(m==1)printf("%d",z/m);
else printf("%d/%d",z,m);
return;
}
void print2(int dele,int m){
int k=1,r=dele,f=1,gc;
for(int i=2;i*i<=dele;i++)while(r%(i*i)==0)k*=i,r/=(i*i);
m=abs(m);
gc=gcd(m,k);
m/=gc,k/=gc;
if(k*1.0/(1.0*m)==1.0)printf("sqrt(%d)",r);
else if(m==1)printf("%d*sqrt(%d)",k,r);
else if(k==1)printf("sqrt(%d)/%d",r,m);
else printf("%d*sqrt(%d)/%d",k,r,m);
return;
}
int main(){
cin>>t>>m;
while(t--){
cin>>a>>b>>c;
del=b*b-4*a*c;
if(del<0)cout<<"NO"<<endl;
else{
g=sqrt(del);
if(g*g==del)print1((((-b+g)/(2*a)>(-b-g)/(2*a))?(-b+g):(-b-g)),2*a),printf("\n");
else{
if(-b!=0)print1(-b,2*a),printf("+");
print2(del,2*a);
printf("\n");
}
}
}
return 0;
}
代码一直50pts,2,4,6,9,10测试点挂了,求调