1038 一元三次方程求解

1038 一元三次方程求解

2001年NOIP全国联赛提高组

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 白银 Silver

题目描述 Description

有形如:ax3+bx2+cx+d=0  这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d  均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。 提示:记方程f(x)=0,若存在2个数x1和x2,且x1<x2,f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个 根。

输入描述 Input Description

一个三次方程的各项系数

输出描述 Output Description

三个解

样例输入 Sample Input

1   -5   -4   20

样例输出 Sample Output

-2.00   2.00   5.00

数据范围及提示 Data Size & Hint

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 double a,b,c,d;
 5 double mid;
 6 int flag=0;
 7 double qz(double p)
 8 {
 9     return a*p*p*p+b*p*p+c*p+d;
10 }
11 
12 void find(double x,double y)
13 {
14 
15     if(y-x>=0.001)
16     {
17         mid=(x+y)/2;
18         if(qz(mid)*qz(x)<0)
19         {
20             find(x,mid);
21         }// 
22         else
23         {
24             find(mid,y);
25         }
26     }
27     if(flag==1)return;
28     printf("%.2lf ",mid);
29     flag=1;
30     return;
31 }
32 int main()
33 {
34     
35     cin>>a>>b>>c>>d;
36     for(int i=-100;i<=100;i++)
37     {
38         double x1=i;
39         double x2=i+1;
40         if(qz(x1)==0)
41         {
42             printf("%.2lf ",x1);
43         }
44         if(qz(x1)*qz(x2)<0)
45         {
46             flag=0;
47             find(x1,x2);
48         }//两个数之间有一个根
49         else
50         continue;    
51     }
52     return 0;
53 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏marsggbo

Udacity并行计算课程笔记- Fundamental GPU Algorithms (Reduce, Scan, Histogram)

如下图示,第一种情况只有一个工人挖洞,他需要8小时才能完成,所以工作总量(Work)是8小时。第二种情况是有4个工人,它们2个小时就能完成挖洞任务,此时工作总量...

1211
来自专栏ml

cf------(round)#1 C. Ancient Berland Circus(几何)

C. Ancient Berland Circus time limit per test 2 seconds memory limit per test ...

2493
来自专栏王亚昌的专栏

A*算法C实现

参考 http://www.cppblog.com/christanxw/archive/2006/04/07/5126.html 实现了A*算法,模拟了一下,...

952
来自专栏瓜大三哥

视频压缩编码技术(H.264) 之算术编码

早在1948年,香农就提出将信源符号依其出现的概率降序排序,用符号序列累计概率的二进值作为对芯源的编码,并从理论上论证了它的优越性。1960年, Peter E...

1163
来自专栏生信小驿站

Python数据处理从零开始----第四章(可视化)(7)(多图合并)目录正文

=========================================================

851
来自专栏CVPy

利用 Python 优雅地可视化数据

最近看《机器学习系统设计》的前两章,学到了一些用Matplotlib进行数据可视化的方法。在这里整理一下。

8680
来自专栏移动开发面面观

OpenGL ES——导入.stl格式的3D模型

2084
来自专栏小鹏的专栏

tensorflow使用BN—Batch Normalization

注意:不要随便加BN,有些问题加了后会导致loss变大。 上一篇是 Batch Normalization的原理介绍,看一下tf的实现,加到卷积后面和全连接层...

9067
来自专栏软件开发 -- 分享 互助 成长

经典算法学习之回溯法

回溯法的应用范围:只要能把待求解的问题分成不太多的步骤,每个步骤又只有不太多的选择就可以考虑使用回溯法。  若用回溯法求问题的所有解时,要回溯到根,且根结点的所...

2358
来自专栏bboysoul

1067: 成绩评估

描述:我们知道,高中会考是按等级来的。90~100为A; 80~89为B; 70~79为C; 60~69为D; 0~59为E。 编写一个程序,对输入的...

842

扫码关注云+社区

领取腾讯云代金券