求一个 a*x*x*x+b*x*x+c*x+d 的解

题目很简单,但是我输出了-0.00,然后就一直卡着,这个问题以后要注意。

让0.00 编程-0.00的方法有很多。

第一种就是直接特判

if(fabs(x-0)<eps) x=0;

  

第二种就是+eps,但是这样可能会有问题

第三种就是二分的时候让答案往正的输出(这个是针对我这个题目的)

我觉得第三种比较靠谱,所以就写了第三个

然后就是让这个eps的精度变高一点,这样的话,浮点误差就比较小。

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <map>
#include <stack>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=2e4+;
typedef long long ll;
const double eps=1e-;
double a,b,c,d;
double cal(double x){
return a*x*x*x+b*x*x+c*x+d;
}
double ok1(double l,double r){
while(r-l>eps){
double mid=(l+r)/;
if(cal(mid)<) l=mid;//!!!
else r=mid;
}
return r;//print r not l
}
double ok2(double l,double r){
while(r-l>eps){
double mid=(l+r)/;
if(cal(mid)>) l=mid;//!!!
else r=mid;
}
return l;//print l not r
}
int main(){
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
double a1=*a,b1=*b,c1=c;
double x1=(-b1+sqrt(b1*b1-*a1*c1))/(*a1);
double x2=(-b1-sqrt(b1*b1-*a1*c1))/(*a1);
if(x1>x2) swap(x1,x2);
double ans1=-,ans2=,ans3=;
if(a>) ans1=ok1(-,x1),ans2=ok2(x1,x2),ans3=ok1(x2,);
else ans1=ok2(-,x1),ans2=ok1(x1,x2),ans3=ok2(x2,);
printf("%.2f %.2f %.2f\n",ans1,ans2,ans3);
return ;
}
//1.000000 134.810000 4749.016919 49980.676731
//-0.715 -0.71 if(fabs(x-)<eps) x=;

最新文章

  1. .NET 提升教育 第一期:VIP 付费课程培训通知!
  2. 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)
  3. Git从入门到学会
  4. Jquery实现一组复选框单选
  5. 在WPF中使用文件夹选择对话框
  6. 用Lucene检索数据库
  7. 【Android自学之旅】 Android开发环境的搭建
  8. [课程相关]homework-03
  9. Fixflow引擎解析(五)(内核) - 基于Token驱动的引擎内核运转原理
  10. HTML新元素
  11. webex录屏
  12. VS2008下编译BOOST 1.39的ASIO库
  13. 用ES6创建一个简单工厂模式
  14. Rest和Restful &amp; http
  15. topcoder srm 305 div1
  16. js正则、js全选、反选、全不选、ajax批删
  17. jquery模型(外壳实现)
  18. Codeforces Beta Round#2
  19. part1:8-远程登录Linux
  20. js 判断图片是否加载完成

热门文章

  1. TensorFlow保存、加载模型参数 | 原理描述及踩坑经验总结
  2. 【论文笔记】张航和李沐等提出:ResNeSt: Split-Attention Networks(ResNet改进版本)
  3. python selenium模块 css定位
  4. 前端学习笔记-H5
  5. vue2.x学习笔记(十一)
  6. linux常用命令--文件搜索
  7. 《闲扯Redis五》List数据类型底层之quicklist
  8. .Net Core主机配置
  9. Web前端开发必不可少的9个开源框架
  10. 新建MapReduce项目