写的很乱,请见谅。
#include<bits/stdc++.h>
using namespace std;
void printy(int a,int b){//输出函数。
int g=__gcd(abs(a),abs(b));
int q=abs(b/g),p=abs(a/g)*(a*b?-1:1);
if(p==0) cout<<0;
else if(q==1) cout<<p;
else printf("%d/%d",p,q);
}
int find(int d){//将一个数换成rt*sqrt(d)形式的数。
int rt=1;
for(int i=2;i<d;i++){
while(d%(i*i)==0){
d/=i*i;
rt*=i;
}
}
return rt;
}
int main(){
int qwertyuiop,asdfghjkl;
cin>>qwertyuiop>>asdfghjkl;
while(qwertyuiop--){
int a,b,c;
cin>>a>>b>>c;
int delta=b*b-4*a*c;
if(delta<0) cout<<"NO"<<endl;
else if(delta==0) printy(-b,2*a),cout<<endl;
else{
if(b!=0){printy(-b,2*a);cout<<"+";}
int rt=find(delta),y=delta/rt/rt;
if(rt==abs(2*a)){
cout<<"sqrt("<<y<<")"<<endl;
}else if(rt%abs(2*a)==0){
cout<<rt/(2*a)<<"*sqrt("<<y<<")"<<endl;
}else if(abs(2*b)%rt==0){
cout<<"sqrt("<<y<<")/"<<abs(2*a)/rt<<endl;
}else{
cout<<rt/__gcd(rt,abs(2*a))<<"*sqrt("<<y<<")/"<<abs(2*a)/__gcd(rt,abs(2*a))<<endl;
}
}
}
}