题目描述:

有形如:f(x)=ax^3+bx^2+cx+d=0这样的一元三次方程,给出该方程中各项的系数a,b,c,d,它们均为实数,并约定该方程一定存在着3个不同的实数解,解的范围在-100至100之间,且解与解之差的绝对值≥1。
现在请你编程,由小到大依次输出这三个实根,并精确到小数点后2位。

输入:

一行4个实数,每两个数之间用1个空格隔开,分别表示a,b,c,d。

1 -5 -4 20

输出:

一行3个实数,分别表示3个实根,每两个之间用1个空格隔开。注意由小到大

-2.00 2.00 5.00

提示:
记方程f(x)=0,若存在2个数x1和x2,且x1<x2,如果f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个解。

所以就直接将解扩大100倍从-100到100进行枚举如果在 i 到  i-1间有f(i)*f(i-1)<0那就说明在i到i-1之间一定有一个解,然后用二分查找解即可。

注意:所有变量都要用double,不然会出错,包括数组的变量。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iomanip>
using namespace std;
double a,b,c,d;
double f(double x)
{
return(x*x*x*a+x*x*b+x*c+d);
}
double ans[];
double bsearch(double l,double r)
{
if(r-l<=0.001)
return l;
double mid=(l+r)/;
if(f(l)*f(mid)<=)
return bsearch(l,mid);
else
return bsearch(mid,r);
}
int main()
{
cin>>a>>b>>c>>d;
int ci=;
for(int i=-;i<=;i++)
{
double l=i,r=i+;
if(f(l)==)
ans[++ci]=l;
else
{
if(f(l)*f(r)<)
{
ans[++ci]=bsearch(l,r);
}
}
if(ci>=)
break;
}
cout<<setiosflags(ios::fixed)<<setprecision();
cout<<ans[]<<' '<<ans[]<<' '<<ans[]<<endl;
return ;
}

最新文章

  1. nodejs express环境配置
  2. Xamarin Andro教程搭建Xamarin Androidid开发环境(一)
  3. 关于SQL配置管理器的服务无法启动的解决办法!
  4. centos6 x86 安装 oracle 11g2r 日志
  5. 如何判断Linux load的值是否过高
  6. JsonCpp(C++程序使用)
  7. 虚拟机Ubuntu无法上网问题解决过程
  8. caffe简单介绍
  9. 初探Parcel
  10. Ubuntu16.04搜狗输入法无法输入中文
  11. 零基础爬虫----python爬取豆瓣电影top250的信息(转)
  12. oracle可重复执行脚本(添加字段)
  13. 从列表和实例来了解python迭代器
  14. 解决Android中,禁止ScrollView内的控件改变之后自动滚动 - 转
  15. [ios]&quot;The identity used to sign the executable is no longer valid&quot;错误解决方法
  16. jquery中的$.each跳出循环并获取返回值
  17. ORA-39006、ORA-39065、ORA-01403、ORA-39097错误解决办法
  18. SQLHappy微软数据库连接查询操作,对数据的处理和查询
  19. Group By和Order By的总结
  20. EditorGUI控件输入监听

热门文章

  1. 从移动硬盘开机,引导VHD(Win10)
  2. c# 正则表达式的用户
  3. UVa 11129 - An antiarithmetic permutation
  4. ExcelUtil
  5. bug工具
  6. php 中 php-fpm 的重启、终止操作命令
  7. 用js来实现页面的换肤功能(带cookie记忆)
  8. --@angularJS--自定义服务与后台数据交互小实例
  9. 解决windows 10 9926 中vmware安装的虚拟机无法桥接上网的问题
  10. python中关于局部变量与全局变量的认识