ALGO-23 一元三次方程求解
ALGO-23 一元三次方程求解
题目
资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java 时间限制:3.0s Python 时间限制:5.0s
问题描述
有形如:\(ax^3+bx^2+cx+d=0\) 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100 至 100 之间),且根与根之差的绝对值>=1。要求三个实根。。
输入格式
四个实数:a,b,c,d
输出格式
由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2 位
样例输入
1 -5 -4 20
样例输出
-2.00 2.00 5.00
数据规模和约定
|a|,|b|,|c|,|d|<=10
代码
import java.util.Scanner;
public class ALGO_23 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
double d = scanner.nextDouble();
scanner.close();
double[] ans = solve(a, b, c, d);
for (int i = 0; i < ans.length; i++) {
System.out.printf("%.2f ", ans[i]);
}
}
private static double[] solve(double a, double b, double c, double d) {
double[] ans = new double[3];
int time = 0;
for (double i = -100; i <= 100 && time < 3; i += 0.01) {
if (Math.abs((a * i * i * i) + (b * i * i) + (c * i) + d) < 0.000001) {
ans[time++] = i;
}
}
return ans;
}
}