Problem Description

给定方程 8x4+ 7x3+ 2x2 + 3x + 6 == Y,请计算x在[0,100]范围内的解。

Input

输入数据首先是一个正整数T(1<=T<=100),表示有T组测试数据。
接下来T行,每行包含一个实数Y ( fabs(Y) <= 1e10 )。

Output

请计算并输出方程在范围[0,100]内的解,结果精确到小数点后4位。
如果无解,则请输出“No solution!”

Sample Input

2
100
-4

Sample Output

1.6152
No solution!

首先这个题,我们先想用什么方法,我们可以使用枚举,而枚举效率过低,我们发现这个函数在[0,100]之间是单调递增的,因此数列有序,我们可以使用二分法去查找最合适的答案,并且把误差控制在1e-4之内。注意这个No solution!情况的判别,我在这居然卡了好久。因为我以为fn(0)就是0,结果半天才检查出来。
因为我们要保留小数点到后四位,所以在循环中我们要控制精度最好在小数点后6~7位。注意输入的数据y是个实数,不是整数。
#include<bits/stdc++.h>
using namespace std;
double fn(double x)
{return 8*pow(x,4.0)+7*pow(x,3.0)+2*pow(x,2.0)+3*x+6;
}
int main()
{int t;cin>>t;while(t--){double y;cin>>y;double mid;if(y>=fn(0)&&fn(100)>=y){double left=0;double right=100;while(right-left>1e-8){mid=(left+right)/2;if(fn(mid)>y)right=mid-1e-9;else if(fn(mid)<y)left=mid+1e-9;elsebreak;}printf("%.4lf\n",(left+right)/2);}elsecout<<"No solution!\n";}return 0;
}

更新一下~~~~
还有一种判断方法
判断

abs(8*mid*mid*mid*mid+7*mid*mid*mid+2*mid*mid+3*mid+6-y)>=1e-5

时循环停止。注意一定要加绝对值。

#include<bits/stdc++.h>
using namespace std;
int main()
{int t;double low,high,mid,y;cin>>t;while(t--){cin>>y;mid=100;if(8*mid*mid*mid*mid+7*mid*mid*mid+2*mid*mid+3*mid+6<y||y<6){cout<<"No solution!"<<endl;continue;}low=0;high=100;mid=(low+high)/2;while(abs(8*mid*mid*mid*mid+7*mid*mid*mid+2*mid*mid+3*mid+6-y)>=1e-5){if(8*mid*mid*mid*mid+7*mid*mid*mid+2*mid*mid+3*mid+6>y){high=mid-1e-10;}else if(8*mid*mid*mid*mid+7*mid*mid*mid+2*mid*mid+3*mid+6<y){low=mid+1e-10;}else break;mid=(low+high)/2;}printf("%.4lf\n",mid);}return 0;
}

解方程(二分法) HDU相关推荐

  1. 解题思考F. 解方程(二分法解方程)

    题目描述 Problem Description 给定方程 8x^4 + 7x^3 + 2x^2 + 3x + 6 == Y,请计算x在[0,100]范围内的解. Input 输入数据首先是一个正整数 ...

  2. 最优化学习---从解方程到最优化1

    来源于 上交视频,https://www.bilibili.com/video/av14666879/ 第一章,introduction Formulation f(x): Cost function ...

  3. 解方程 ( 迭代法/牛顿迭代/高斯消元 ) 详解及模板

    欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/--萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗-- 一.迭代法解方程 ( ...

  4. C语言 牛顿法 解方程,牛顿法解方程

    数值法解方程广泛应用于各种工程科学领域,它可以求出解的近似值,而对于高次方程没有求根公式,而且对于各种困难的方程,数值法就显得尤为重要. 我们的老师向我们介绍了"二分法",这种方法 ...

  5. python解复杂方程_Python数据处理篇之Sympy系列(五)---解方程

    前言 sympy不仅在符号运算方面强大,在解方程方面也是很强大. 本章节学习对应官网的:Solvers 官方教程 (一)求解多元一次方程-solve() 1.说明: 解多元一次方程可以使用solve( ...

  6. java2的7次方怎么表示_python编程解方程第二弹:10行代码解二次方程(纯字符)...

    用纯字符串格式来记录二次方程: '3x^2-10x-8=0' 'x^2-2x+1=0' '3x^2+14x+8=0' 'x^2=9' 二次方怎么表示呢?比如上面的^表示法,或者是python风格的** ...

  7. 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】

    3751: [NOIP2014]解方程 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 4856  Solved: 983 [Submit][Stat ...

  8. 10.24T3 解方程 取模意义下运算+秦九韶算法

    #1228 解方程 描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入 输入共n + 2 行. 第一行包含2 ...

  9. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

最新文章

  1. var java_var 是 Java 开发的好朋友啊!
  2. MyBatis入门学习教程-调用存储过程
  3. elemet UI 中表格数据的排序操作
  4. php临时目录没有文件夹里,PHP上传 找不到临时文件夹的解决方法
  5. 编码实战Web端联系人的增删改查
  6. arrays中copyof复制两个数组_数据结构与算法(3)数组
  7. vivo S10系列官方渲染图公布 外壳太好看了!
  8. [leetcode]693. 交替位二进制数
  9. SGuard64.exe(SGuardwnd) ACE-Guard Client EXE:造成磁盘经常读写,游戏卡顿,及解决方案
  10. Pr视频剪辑基础技巧学习
  11. mate7tl10是Android,华为Mate 7 MT7-TL10官方线刷包安卓5.1.1Rom刷机包
  12. Excel办公中的应用(中秋快乐学习)(注意:全部为英文符号)
  13. 基于不同策略的英文单词的词频统计和检索系统(C++)
  14. (day16)媒体查询和响应式布局
  15. TortoiseGit commands(命令)(完整中文翻译)
  16. CMGCN 2022ACL
  17. 读《迟到的间隔年》有感
  18. 算法模型好坏、评价标准、算法系统设计
  19. 关于Mac App Store无法下载、无法安装、一直转圈的解决方法
  20. 基于Java+Vue+uniapp微信小程序实现餐厅校园订餐平台

热门文章

  1. Kendo ui 使用总结----Kendo UI 模板
  2. 大数据分析如何跟踪迁移模式
  3. java超简单计算器_Java实验--超级简单的计算器
  4. html实现圈内特效
  5. 创造力的分类:机器学习技术在发散思维EEG数据中的应用
  6. 制作elasticsearch 镜像_相册视频制作-相册视频制作App下载-
  7. SD卡插入手机容量变小,U盘低级格式化HA-LLFTOOL
  8. 【寒江雪】Go实现外观模式
  9. Steam云状态无法同步怎么办?
  10. 靶机渗透【bulldog】