题目描述
编程求解方程ax2 +bx+c=0的根
输入格式
输入共一行,三个整数a,b,c
输出格式
输出共一行,输出保留三位小数
若方程有两个解先输出较小的解再输出较大的解
若方程仅有一个解则只输出一个解
若方程无解,输出No Answer!
输入输出样例
输入 #1 复制
6519 9983 9388
输出 #1 复制
No Answer!
输入 #2 复制
1373 9647 4250
输出 #2 复制
-6.554 -0.472
说明/提示
0≤a≤104
0≤b≤10 4
0≤c≤10 4
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
double Delta(double a,double b,double c){
return b*b - 4*a*c;
}
void Soq1(double a,double b,double c){
double x1,x2;
x1 = (-b + sqrt(Delta(a,b,c)) ) / (2*a);
x2 = (-b - sqrt(Delta(a,b,c)) ) / (2*a);
cout<<fixed<<setprecision(3);
cout<<x2<<" "<<x1<<"\n";
}
void Soq2(double a,double b,double c){
double x;
x = -b / (2*a);
cout<<fixed<<setprecision(3);
cout<<x<<"\n";
}
void Soq3(){
cout<<"No Answer!"<<"\n";
}
void Soq4(double b,double c){
double x;
x = -c / b;
cout<<x<<"\n";
}
int main(){
double a,b,c;
cin>>a>>b>>c;
if(a == 0){
if(b == 0 ){
if(c == 0){
cout<<"No Answer!"<<"\n";
}
else Soq3();
}
else
Soq4(b,c);
}
else{
if(Delta(a,b,c) > 0) Soq1(a,b,c);
else if(Delta(a,b,c) == 0) Soq2(a,b,c);
else Soq3();
}
return 0;
}