不合逻辑的RE我真的调不出来了!!!
#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,c;
int huajian(int a){
int i=a;
while(i>1){
if(!(a%(i*i)))break;
i--;
}
return i;
}
signed main(){
cin>>n>>m;
while(n--){
cin>>a>>b>>c;
int delta=b*b-4*a*c;
if(delta<0){
cout<<"NO"<<endl;
continue;
}
if(a<0){a=(-1)*a,b=(-1)*b,c=(-1)*c;}
delta=b*b-4*a*c;
int sq=sqrt(delta);
if(sq*sq==delta){
int x=-b+sq;
if(x*a<0)cout<<"-";
x=abs(x);
a=abs(a);
int gcd=__gcd(x,2*a);
if(2*a==gcd)cout<<x/gcd<<endl;
else cout<<x/gcd<<"/"<<2*a/gcd<<endl;
}else{
sq=huajian(delta);
int d;
if(sq!=0)d=delta/sq/sq;
else d=delta;
if((-b)*a<0)cout<<"-";
b=abs(b);
if(b!=0){
int gcd=__gcd(b,2*a);
if(gcd==(2*a))cout<<b/gcd;
else cout<<b/gcd<<"/"<<2*a/gcd;
cout<<"+";
}
int gcd=__gcd(sq,2*a);
if(gcd==(2*a)){
if(sq/gcd==1)cout<<"sqrt("<<d<<")"<<endl;
else cout<<sq/gcd<<"*sqrt("<<d<<")"<<endl;
}
else{
if(sq/gcd==1)cout<<"sqrt("<<d<<")/"<<2*a/gcd<<endl;
else cout<<sq/gcd<<"*sqrt("<<d<<")/"<<2*a/gcd<<endl;
}
}
}
return 0;
}