#include <bits/stdc++.h>
using namespace std;
int t,m,a,b,c,dt,ans;
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
void turnR(int x,int y){
if(y==1){
cout<<x;
}
else if(y==-1){
cout<<-x;
}
else if(x==0){
cout<<'0';
}
else{
int d=gcd(abs(x),abs(y));
if(y/d==1)cout<<x/d;
else if(y/d==-1)cout<<-x/d;
else if(x*y>0)cout<<abs(x/d)<<'/'<<abs(y/d);
else cout<<'-'<<abs(x/d)<<'/'<<abs(y/d);
}
return;
}
void turnSQ(int x){
double q2;
int d=1;
for(int i=1;i*i<=x;i++){
if(x%(i*i)==0){
q2=i;
}
}
x/=q2*q2;
q2/=abs(2*a);
if(q2==1)
cout<<"sqrt("<<x<<')';
else if(int(q2)==q2)
cout<<q2<<'*'<<"sqrt("<<x<<')';
else if(int(1/q2)==1/q2)
cout<<"sqrt("<<x<<")/"<<(1/q2);
else{
while(1){
if(int(q2*d)==q2*d){
cout<<q2*d<<'*'<<"sqrt("<<x<<")/"<<d;
break;
}
else
d++;
}
}
return;
}
int main(){
//freopen("uqe2.in","r",stdin);
// freopen("uqe.out","w",stdout);
cin>>t>>m;
while(t--){
cin>>a>>b>>c;
dt=b*b-4*a*c;
if(dt<0)
cout<<"NO";
if(dt==0)
turnR(-b,2*a);
if(dt>0){
if(a>0){
if(int((-b+sqrt(dt))/(2*a))==(-b+sqrt(dt))/(2*a)){
cout<<(-b+sqrt(dt))/(2*a);
}
else if(int(sqrt(dt))==sqrt(dt))
turnR(-b+sqrt(dt),2*a);
else{
if(b==0){
turnSQ(dt);
}
else{
turnR(-b,2*a);
cout<<'+';
turnSQ(dt);
}
}
}
if(a<0){
if(int((-b-sqrt(dt))/(2*a))==(-b-sqrt(dt))/(2*a)){
cout<<(-b-sqrt(dt))/(2*a);
}
else if(int(sqrt(dt))==sqrt(dt))
turnR(-b-sqrt(dt),2*a);
else{
if(b==0){
turnSQ(dt);
}
else{
turnR(-b,2*a);
cout<<'+';
turnSQ(dt);
}
}
}
}
if(t!=0)
cout<<endl;
}
return 0;
}
如题,#1#3AC,其他全部WA