70分,不知道是哪个特判没写,求调
#include<bits/stdc++.h>
using namespace std;
double ans1,ans2;
int a,b,c,d,t,m;
int gcd(int a,int b)
{
if(b==0)return a;
return gcd(b,a%b);
}
int main()
{
scanf("%d%d",&t,&m);
while(t--)
{
scanf("%d%d%d",&a,&b,&c);
if(a<0)
{
a=-a;
b=-b;
c=-c;
}
d=b*b-4*a*c;
if(d<0)//
printf("NO\n");
else if(!d)//
{
int a2=2*a;
b=-b;
int g=gcd(b,a2);
b/=g;
a2/=g;
if(a2<0)
{
b=-b;
a2=-a2;
}
if(!b)
printf("0\n");
else if(a2==1)
printf("%d\n",b);
else
printf("%d/%d\n",b,a2);
}
else
{
int r=d;
int q1=-b;
int q2=1;
for(int i=2;i*i<=r;i++)
{
int cnt=0;
while(r%(i*i)==0)
{
q2*=i;
r/=i*i;
}
}
int a21=2*a;
int a22=2*a;
if(r==1)
{
int q1q2=q1+q2;
int g=gcd(q1q2,a21);
q1q2/=g;
a21/=g;
if(a21==1)
printf("%d\n",q1q2);
else
printf("%d/%d\n",q1q2,a21);
}
else
{
int g1=gcd(q1,a21);
int g2=gcd(q2,a22);
q1/=g1;
a21/=g1;
q2/=g2;
a22/=g2;
if(a21<0)
{
a21=-a21;
q1=-q1;
}
if(a22<0)
{
q2=-q2;
a22=-a22;
}
if(q2<0)
q2=-q2;
if(q1)
{
if(a21==1)
printf("%d+",q1);
else
printf("%d/%d+",q1,a21);
}
if(q2==1)
{
if(a22==1)
printf("sqrt(%d)\n",r);
else
printf("sqrt(%d)/%d\n",r,a22);
}
else
{
if(a22==1)
printf("%d*sqrt(%d)\n",q2,r);
else
printf("%d*sqrt(%d)/%d\n",q2,r,a22);
}
}
}
}
return 0;
}