cout<<"No";
而正确的代码是:
cout<<"NO";
就因为这个 No 没有大写,让我查了半天QAQ
顺便附上我平生以来写的最简洁的AC代码
#include<bits/stdc++.h>
using namespace std;
int gcd(int x,int y){
return y==0?x:gcd(y,x%y);
}
int maxmul(int a,int b,int option){
return option<0?min(a,b):max(a,b);
}
void cutnum(int &a,int &b){
int g=gcd(a,b);
a/=g;b/=g;
if(b<0){a*=-1;b*=-1;}
}
int maxpow(int n){
for(int i=2;i*i<=n;i++)
if(n%(i*i)==0) return i*maxpow(n/i/i);
return 1;
}
int main(){
int T,M;
cin>>T>>M;
while(T--){
int a,b,c;
cin>>a>>b>>c;
int dl=b*b-4*a*c;
if(dl<0){
cout<<"NO"<<endl;
continue;
}
int d=sqrt(dl);
if(d*d==dl){//有理数
int p1=-b+d,p2=-b-d,q=2*a;
int x=maxmul(p1,p2,q);
cutnum(x,q);
if(q==1) cout<<x<<endl;
else cout<<x<<"/"<<q<<endl;
}else{//无理数
int mx=maxpow(dl),q1=2*a,q2=2*a,x=-b;
dl/=mx*mx;
cutnum(x,q1);cutnum(mx,q2);
if(q1==1&&x!=0) cout<<x<<"+";
else if(x!=0) cout<<x<<"/"<<q1<<"+";
if(mx<0) mx*=-1;
if(mx!=1) cout<<mx<<"*";
cout<<"sqrt("<<dl<<")";
if(q2!=1) cout<<"/"<<q2;
cout<<endl;
}
}
return 0;
}