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;
    }

}
posted @ 2022-04-06 15:01  morning-start  阅读(44)  评论(0编辑  收藏  举报