Equation
You are given an equation:
Your task is to find the number of distinct roots of the equation and print all of them in ascending order.
The first line contains three integer numbers A, B and C ( - 105 ≤ A, B, C ≤ 105). Any coefficient may be equal to 0.
In case of infinite root count print the only integer -1. In case of no roots print the only integer 0. In other cases print the number of root on the first line and the roots on the following lines in the ascending order. Print roots with at least 5 digits after the decimal point.
Input
1 -5 6
Output
2 2.0000000000 3.0000000000
code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int main(){
double a,b,c;
cin >> a >> b >> c;
if(a == 0 && b == 0){
if(c == 0) printf("-1\n");
else printf("0\n");
}
else if(a == 0 && c == 0){
printf("1\n0\n");
}
else if(b == 0 && c == 0){
printf("1\n0\n");
}
else if(a == 0){
printf("1\n");
printf("%.10f\n",-c/b);
}
else{
double diat = b*b-4*a*c;
if(diat < 0) printf("0\n");
else if(diat == 0){
printf("1\n");
printf("%.10f\n",(-b/(2*a)));
}
else{
printf("2\n");
double x1 = (-b-sqrt(diat))/(2*a);
double x2 = (-b+sqrt(diat))/(2*a);
if(x1 > x2) swap(x1,x2);
printf("%.10f\n%.10f\n",x1,x2);
}
}
return 0;
}
本文介绍了一个简单的程序,用于解决标准形式的二次方程 Ax^2 + Bx + C = 0,并找出其根的数量及具体数值。程序首先检查系数A、B、C,然后根据判别式的值来确定方程的根数并计算这些根。
2066

被折叠的 条评论
为什么被折叠?



