样例过了,但是一堆wa与re?
#include<bits/stdc++.h>
using namespace std;
int gys(int a,int b){
if(a%b==0) return b;
else return gys(b,a%b);
}
double zs(double s){
return s-int(s);
}
int hj(int a){
int o=1,x=a;
for(int i=2;i<=x;i++){
while(a%(i*i)==0){
a=a/(i*i);
o*=i;
}
}
return o;
}
int main(){
int t,m;
cin>>t>>m;
for(int i=1;i<=t;i++){
int a,b,c;
double max;
cin>>a>>b>>c;
if(pow(b,2)-4*a*c<0) cout<<"NO\n";
else{
if(a>0) max=(-b+sqrt(b*b-4*a*c))/(2*a);
else max=(-b-sqrt(pow(b,2)-4*a*c))/(2*a);
if(zs(max)==0){
cout<<int(max)<<"\n";
}
else{
if(zs(sqrt(pow(b,2)-4*a*c))==0){
if(2*a/gys(max*2*a,2*a)<0) cout<<-(max*2*a)/gys(max*2*a,2*a)<<"/"<<2*-a/gys(max*2*a,2*a)<<"\n";
else cout<<(max*2*a)/gys(max*2*a,2*a)<<"/"<<2*a/gys(max*2*a,2*a)<<"\n";
}
else{
if(b!=0){
if(zs(1.0*-b/(2*a))==0) cout<<int(-b/(2*a))<<"+";
else {
if(2*a/gys(-b,2*a)<0)cout<<b/gys(-b,2*a)<<"/"<<-2*a/gys(-b,2*a)<<"+";
else cout<<-b/gys(-b,2*a)<<"/"<<2*a/gys(-b,2*a)<<"+";
}
}
int r=hj(pow(b,2)-4*a*c);
if(a>0){
if(r/(2*a)==1) printf("sqrt(%0.f)\n",(pow(b,2)-4*a*c)/pow(r,2));
else if(zs(1.0*r/(2*a))==0) printf("%d*sqrt(%0.f)\n",r/(2*a),(pow(b,2)-4*a*c)/pow(r,2));
else if(zs(1.0*2*a/r)==0) printf("sqrt(%0.f)/%d\n",(pow(b,2)-4*a*c)/pow(r,2),2*a/r);
else printf("%d*sqrt(%0.f)/%d\n",r/gys(r,2*a),(pow(b,2)-4*a*c)/pow(r,2),2*a/gys(r,2*a));
}
else{
if(r/(2*a)==1) printf("sqrt(%0.f)\n",(pow(b,2)-4*a*c)/pow(r,2));
else if(zs(1.0*r/(-2*a))==0) printf("%d*sqrt(%0.f)\n",r/(-2*a),(pow(b,2)-4*a*c)/pow(r,2));
else if(zs(1.0*-2*a/r)==0) printf("sqrt(%0.f)/%d\n",(pow(b,2)-4*a*c)/pow(r,2),-2*a/r);
else printf("%d*sqrt(%0.f)/%d\n",r/gys(r,-2*a),(pow(b,2)-4*a*c)/pow(r,2),2*a/gys(r,-2*a));
}
}
}
}
}
return 0;
}