#include <stdio.h>
#include <math.h>
int main (void)
{ double a,b,c,d,e,x1,x2;
scanf("%lf %lf %lf",&a,&b,&c);
d=b*b-4*a*c;
if (d>0)
{ if(a==0)
x1=-c/b;printf("%.2lf\n",x1);
if (a!=0)
{ x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("%.2lf\n%.2lf\n",x1,x2);
}
}
else if (d==0)
{ if (a==0&&b==0&&c==0)
printf("Zero Equation\n");
else if(a==0&&b==0&&c!=0)
printf("Not An Equation\n");
else
{
x1=-b/(2*a);
printf("%.2lf\n",x1);
}
}
else
{ if (a!=0)
if(b==0)
{
x1=sqrt(-d)/(2*a);
x2=sqrt(-d)/(2*a);
printf("0.00+%.2lfi\n0.00-%.2lfi\n",x1,x2);
}
else
{
x1=sqrt(-d)/(2*a);
e=-b/(2*a);
x2=sqrt(-d)/(2*a);
printf("%.2lf+%.2lfi\n%.2lf-%.2lfi\n",e,x1,e,x2);
}
}
return 0;
}
この質問では、1つの未知数に2次方程式の根が必要であり、結果は小数点以下2桁になります。
入力形式:
3つの浮動小数点係数a、b、cをスペースで区切って1行で入力します。
出力形式:
係数に応じて、異なる結果が出力されます
。1)方程式に2つの等しくない実根がある場合、1行ごとに1つの根が出力され、最初に大きく、次に小さくなります
。2)方程式に2つの等しくない複素根がある場合、それぞれこの行は、「実数部+虚数部i」の形式に従って根を出力し、最初に虚数部を正として出力し、次に虚数部を負として出力します
。3)方程式に根が1つしかない場合は、この根を直接出力します
。4)係数がすべての場合0の場合は「ゼロ方程式」を出力し、
5)aとbが0でcが0でない場合は「方程式でない」を出力します。
入力例1:
2.1 8.9 3.5
出力例1:
-0.44
-3.80
入力例2:
1 2 3
出力例2:-1.00
+ 1.41i
-1.00-1.41i
入力例3:
0 2 4
出力例3:
-2.00
入力例4:
0 0 0
出力例4 :
ゼロ方程式
入力例5:
0 0 1
出力例5:
非方程式