T了第四个点 望大佬捞一下
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll gcd(ll x,ll y){
ll i;
for(i = min(abs(x),abs(y));i>=1;i--)if(x%i==0&&y%i==0)return i;
return i;
}
int main(){
ll n,m;
scanf("%lld%lld",&n,&m);
while(n--){
ll a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
ll det=b*b-4*a*c;
if(det<0){
cout<<"NO"<<endl;
continue;
}
ll sdet=sqrt(det);
if(sdet*sdet==det){
b*=-1;
if(2*a>0)b+=sdet;
else b-=sdet;
if(b==0){
cout<<b<<endl;
continue;
}
int q=gcd(b,2*a);
if(q==0)q=max(b,2*a);
if(q==2*a)cout<<b/2/a<<endl;
else if(q==-2*a)cout<<b/2/a<<endl;
else if(a*2>0)cout<<b/q <<"/"<<a*2/q<<endl;
else cout<< b/q*(-1)<<"/"<<a*2/q*(-1)<<endl;
}
else{
ll p=0;
for(ll i=1;i<det/2;i++){
if(det%(i*i)==0)p=i;
}
det/=p*p;
ll q=gcd(p,b);
if(q==0)q=max(p,b);
q=gcd(q,2*a);
ll tq=gcd(2*a,b);
ll dq=gcd(p,2*a);
if(tq==0)tq=max(2*a,b);
if(dq==0)dq=max(2*a,p);
if(2*a<0){
p*=-1;
p=abs(p);
b*=-1;
a*=-1;
}
if((2*a)/q==1){
if(b!=0)cout<< -1*b/q;
if(p>0&&b!=0)cout<<"+";
if(abs(p/q)!=1)cout<<p/q<<"*";
cout<<"sqrt("<<det<<")"<<endl;
}
else{
if(b!=0&&abs(-1*b/tq)%abs(2*a/tq)!=0)cout<< -1*b/tq<<"/"<<2*a/tq;
else if(b!=0)cout<<(-1*b/q)/(2*a/q);
if(p>0&&b!=0)cout<<"+";
if(abs(p/dq)!=1)cout<<p/dq<<"*";
cout<<"sqrt("<<det<<")";
if(abs(2*a/dq)!=1)cout<<"/"<< abs(2*a/dq)<<endl;
else cout<<endl;
}
}
}
return 0;
}