P1024 [NOIP2001 提高组] 一元三次方程求解java
时间: 2024-12-30 13:13:45 浏览: 46
Java 实现一元三次方程求解
对于 NOIP2001 提高组 P1024 一元三次方程求解问题,可以采用暴力枚举法来解决问题。这种方法通过遍历可能的根范围并检测函数值的变化来找到近似解。
package com.kk.luogu;
import java.util.Scanner;
public class P1024 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入系数 a, b, c, d
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
double d = scanner.nextDouble();
// 枚举区间 [-100, 100] 的每一个数作为潜在的根
for (double i = -100; i <= 100; i += 0.001) {
// 计算多项式的值 f(x)=ax³+bx²+cx+d
if (Math.abs(a * Math.pow(i, 3) + b * Math.pow(i, 2) + c * i + d) < 0.0001) {
System.out.printf("%.2f\n", i); // 输出保留两位小数的结果
}
}
scanner.close();
}
}
上述代码实现了题目要求的功能,在给定范围内逐个尝试可能的实数根,并利用绝对误差小于 0.0001
来判断是否找到了一个足够接近实际零点的位置[^2]。
为了提高精度和效率,还可以考虑改进算法,比如二分查找或其他数值方法,但这超出了当前讨论的范畴。
相关推荐














