一元三次方程求解

题目描述

链接:https://ac.nowcoder.com/acm/problem/16694
来源:牛客网

有形如: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)之间一定有一个根。

输入描述

一行,4个实数A,B,C,D。

输出描述

一行,3个实根,并精确到小数点后2位。

示例1

输入

1 -5 -4 20

输出

-2.00 2.00 5.00

分析

因为根于根之差的绝对值>=1,所以以1为单位长度进行二分最合适,即x2 - x1 = 1。
在本题中,最好将所有数据定义为double/float类型,以免出现错误。
以a = x * y为例,当x,y其中只要有一个为float/double类型时,x*y的结果(不是指的a)就是float/double类型;当x,y都为int类型时,即使a被定义为float/double类型,最后a还是int类型。

#include <iostream>
using namespace std;float a, b, c, d;
float fun(float i) //i的类型一定要是float/double
{return  i * i * i * a + i * i * b + i * c + d;
}int main()
{cin >> a >> b >> c >> d;for (float i = -100; i < 100; ++i){if (fun(i) * fun(i + 1) <= 0){if (fun(i) == 0){printf("%.2f ", i);}else if (fun(i + 1) == 0){printf("%.2f ", i + 1);++i; //很重要,避免下次重复计算}else //二分{float l = i, r = i + 1;float mid;while (r - l >= 1e-3){mid = (l + r) / 2.0;if (fun(mid) == 0){printf("%.2f ", mid);break;}else if (fun(l) * fun(mid) < 0)r = mid;else if (fun(mid) * fun(r) < 0)l = mid;}if (fun(mid) != 0)printf("%.2f ", mid);}}}return 0;
}

一元三次方程求解-二分相关推荐

  1. NOIP 2001 一元三次方程求解(二分||盛金公式)

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

  2. 一元三次方程求解 -- 二分查找

    [NOIP2001 提高组] 一元三次方 题目描述 思路 code tag:数学,二分查找 题目链接:洛谷P1024: [NOIP2001 提高组] 一元三次方 题目描述 思路 先对三次函数求导得到二 ...

  3. 【luogu 1024 一元三次方程求解】二分思想

    题目出自luogu 1024 一元三次方程求解 描述: 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根( ...

  4. P1024 一元三次方程求解 牛顿迭代+盛金公式+二分+勘根定理

    P1024 一元三次方程求解 传送门 题目描述 有形如:ax^3+bx^2+cx^1+dx^0=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实 ...

  5. 洛谷 P1024 一元三次方程求解 (暴力 or 二分 or 盛金公式)

    P1024 一元三次方程求解 题意 有形如:ax3+bx2+cx+d=0ax^3+bx^2+cx+d=0ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,da, ...

  6. zcmu-2116一元三次方程求解

    2116: 一元三次方程求解 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 65  Solved: 23 [Submit][Status][Web B ...

  7. 蓝桥杯 算法训练 一元三次方程求解

    算法训练 一元三次方程求解   时间限制:1.0s   内存限制:256.0MB        问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b, ...

  8. 1814: 一元三次方程求解

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

  9. 信息学奥赛一本通(1238:一元三次方程求解)

    1238:一元三次方程求解 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 6364     通过数: 3241 [题目描述] 形如:ax^3+bx^2+cx+d= ...

最新文章

  1. 基于深度学习的可疑活动视频分析
  2. java正则表达式逗号_正则表达式只匹配逗号而不是括号?
  3. 让IIS建立的站点默认是.net 2.0的,而不是.net 1.1的代码
  4. 【Android 内存优化】垃圾回收算法 ( 内存优化总结 | 常见的内存泄漏场景 | GC 算法 | 标记清除算法 | 复制算法 | 标记压缩算法 )
  5. 窗口分析函数_16_找出最后一个元素
  6. 关于HTML5本地持久化存储的Web SQL、Local Storage、Cookies技术
  7. 设计师应该尊重技术的限制
  8. FCKeditor + smarty
  9. Epic:把虚幻引擎推向所有游戏平台
  10. Hpdl80服务器硬件驱动,hpe proliant dl80 gen9服务器用户指南.pdf
  11. 手把手教你从0开始建中台
  12. 理解CSS3属性transition
  13. Introduction to Computer Networking学习笔记(二十一):TCP拥塞控制-基础、公平分配带宽准则
  14. Ubuntu 18.04 安装 Wine
  15. 恒指期货交易5分钟技巧
  16. 训练好的神经网络 如何预测_【家长必看】如何帮助孩子训练好口才?
  17. linux查看进程家族树,3.1.6 进程家族树
  18. 小米计算机找不到,小米手机投屏找不到设备的情况怎么办?
  19. 一池江水半江灯。繁星点点落江城,严霜寒雪封不住,若明若暗水火情
  20. 网络攻防学习心得一(20159320)学习小结

热门文章

  1. python租车系统_使用Python实现租车计费系统的两种方法
  2. java kfs_Hypertable hbase hdfs kfs java与c++的较量
  3. 三个“老掉牙”的推广引流绝招
  4. 论文阅读——Segmenting Medical MRI via Recurrent Decoding Cell
  5. GNSS数据下载网站整理,包括gamit、bernese更新文件地址[2021.08更新]
  6. 多传感器信息融合的典型应用_2019年传感器市场规模与趋势,多传感器融合技术风头逐步显现...
  7. 关于freetype的移植和其官方demos的使用总结
  8. web端分享到微信的图标显示不出来,成回形针状
  9. 用selenium 爬取世纪佳缘信息
  10. Mac-safari查看网页源代码