蒟蒻写的不是很好看 见谅
#include <bits/stdc++.h>
using namespace std;
int t,m,a,b,c,d,f,num,j,r,p[]={0,2,3,5,7,11,13,17,0};
void init(int x,int y){
f=1;
if(x<0){f*=-1;x*=-1;}
if(y<0){f*=-1;y*=-1;}
num=__gcd(x,y);
x/=num;y/=num;
if(x==1)printf("%d",f*y);
else printf("%d/%d",f*y,x);
}
void init_plus(int x,int y,int z){
f=1;
if(x<0){x*=-1;}
if(y<0){y*=-1;}
num=__gcd(x,y);
x/=num;y/=num;
if(f==1&&y==x)printf("sqrt(%d)",z);
else if(x==1)printf("%d*sqrt(%d)",f*y,z);
else if(y==1)printf("sqrt(%d)/%d",z,f*x);
else printf("%d*sqrt(%d)/%d",f*y,z,x);
}
int main(){
cin >> t >> m;
for(int i=1;i<=t;i++){
cin >> a >> b >> c;
d=b*b-4*a*c;
if(d<0){
printf("NO\n");
continue;
}
if((int)sqrt(d)*(int)sqrt(d)==d){
init(2*a,sqrt(d)-b);
printf("\n");
continue;
}
if(b!=0){
init((-2)*a,b);
printf("+");
}
j=1;r=1;
while(j<=7){
if(d%(p[j]*p[j])==0){
d/=(p[j]*p[j]);r*=p[j];
}
else j++;
}
init_plus(2*a,r,d);
printf("\n");
}
return 0;
}