#LQ1086. 一元三次方程求解

一元三次方程求解

版权信息

来源​: 自定义题目 ​题目名称​: 一元三次方程的根


任务总览表

任务名称 时间限制 内存限制 分数
一元三次方程的根 1 sec 256 MB 10 points

题目描述

有形如:ax³ + bx² + cx + d = 0 这样的一个一元三次方程。给出该方程中各项的系数 (a, b, c, d 均为实数),并约定该方程存在三个不同的实根(根的范围在 -100 至 100 之间),且根与根之差的绝对值 ​**>= 1**​。要求输出三个实根。


输入格式

输入包含四个实数:​a, b, c, d​,表示一元三次方程的系数。


输出格式

输出三个实根,按从小到大的顺序输出,并精确到小数点后两位,每两个根之间用一个空格分隔。


样例输入

1 -5 -4 20

样例输出

-2.00 2.00 5.00

提示

  • 时间限制​: 1.0s
  • 内存限制​: 256 MB
  • 系数范围​: |a|, |b|, |c|, |d| ≤ 10
  • 方程保证有三个不同实根,且根与根之差的绝对值 ​**>= 1**​。

题目分析

目标

  • 求解一元三次方程的三个实根,并确保根的精度为小数点后两位。

思路

  • 这是一个标准的三次方程求根问题,可以通过数值方法来解决。
  • 利用数值方法求解​:对于三次方程,通常可以使用 牛顿法 或者利用现成的数学库(如 Python 的 numpy.roots)来求解其根。
  • 根的顺序:输出的根需要按从小到大的顺序排列。

解法

  1. 输入解析​:读入系数 ​a, b, c, d​。
  2. 数值求解​:使用 numpy.roots 或其他数值解法来求解该方程的根。
  3. 排序和输出​:得到的三个根需要排序后输出,并保留两位小数。

时间复杂度分析

  • 求解三次方程的根使用的是数值方法,时间复杂度大约为 ​**O(1)**​,即常数时间,适用于本题的规模。

结论

通过数值方法和数学库的辅助,我们可以高效地求解该方程的根,并确保结果的精度。