欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

1814: 一元三次方程求解

发布时间:2024/9/3 编程问答 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 1814: 一元三次方程求解 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

//很久之前写的,记录一下~
1814: 一元三次方程求解
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 45 Solved: 28
[Submit][Status][Web Board]
Description

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

Input

四个实数:a,b,c,d。数据规模和约定   |a|,|b|,|c|,|d|< =10

Output

由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位

Sample Input

1 -5 -4 20

Sample Output

-2.00 2.00 5.00

HINT

Source
AC_code:

#include<stdio.h> #include<math.h> double a,b,c,d,m[5]; double y(double x) {return (a*x*x*x+b*x*x+c*x+d); } int main() {scanf("%lf%lf%lf%lf",&a,&b,&c,&d);int i=0;double x,x1,x2,x3;for( x = -100; x <= 100; x++){x1 = x,x2 = x+1;if(y(x1)==0) m[i++] = x1;else if((y(x1)*y(x2))<0){do{x3 = (x1+x2) / 2;if((y(x1)*y(x3))<=0){x2 = x3;}else x1 = x3;}while((x2-x1)>=0.001);m[i++] = x1;}}printf("%.2lf",m[0]);for(int j = 1; j < i; j++){printf(" %.2lf",m[j]);}printf("\n");return 0; }

总结

以上是生活随笔为你收集整理的1814: 一元三次方程求解的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。