rt,求hack或者找错
#include<iostream>
#include<cmath>
using namespace std;
int gcd(int x,int y) {
if(x%y==0) return y;
return gcd(y,x%y);
}
int main() {
int t,m;
cin>>t>>m;
while(t--) {
int a,b,c;
cin>>a>>b>>c;
int d=b*b-4*a*c;
if(d<0){
cout<<"NO"<<endl;
continue;
}
double x=max((-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
int n=sqrt(d);
if(n*n==d) {
int x=-b+sqrt(d);
int y=2*a;
if(1.0*x/y<(-b-sqrt(d))/y) x=-b-sqrt(d);
if(y/gcd(x,y)==1) {
cout<<x/gcd(x,y)<<endl;
}else {
if(y/gcd(x,y)<0) cout<<-x/gcd(x,y)<<'/'<<-y/gcd(x,y)<<endl;
else cout<<x/gcd(x,y)<<'/'<<y/gcd(x,y)<<endl;
}
}
else{
double q1=-b/(2.0*a),q2=1;
int r=d;
for(int i=2; i*i<=r; i++) {
if(r%(i*i)==0) {
r/=i*i;
q2*=i;
i--;
}
}
q2/=abs(2*a);
if(q1!=0) {
int x=-b;
int y=2*a;
if(y/gcd(x,y)==1) cout<<x/gcd(x,y)<<'+';
else {
if(y/gcd(x,y)<0) cout<<-x/gcd(x,y)<<'/'<<-y/gcd(x,y)<<'+';
else cout<<x/gcd(x,y)<<'/'<<y/gcd(x,y)<<'+';
}
}
double q3=1/q2;
if(q2==1) cout<<"sqrt("<<r<<')'<<endl;
else if((int)(q2)==q2) cout<<q2<<"*sqrt("<<r<<')'<<endl;
else if((int)(q3)==q3) cout<<"sqrt("<<r<<")/"<<q3<<endl;
else {
int c=q2*abs(2*a);
int d=abs(2*a);
if(d/gcd(c,d)<0) cout<<-c/gcd(c,d)<<"*sqrt("<<r<<")/"<<-d/gcd(c,d)<<endl;
else cout<<c/gcd(c,d)<<"*sqrt("<<r<<")/"<<d/gcd(c,d)<<endl;
}
}
}
return 0;
}