hdu2199(方程求值二分法)
来源:互联网 发布:众海消防主机编程密码 编辑:程序博客网 时间:2024/06/06 01:07
题意:方程 8* X ^ 4 + 7 * X ^ 3 + 2 * X ^ 2 + 3 * X + 6 == Y,x取值在0和100之间,现在给你一个Y 让你求x的值
思路:二分,因为方程为单调递增序列,所以先将50( mid = (0+100) / 2 )带入方程得到Y1值,比较Y和Y1的大小,
如果Y1 < Y 说明x的取值小了 ,然后解得区间 就变成left = mid [mid , right]
如果Y1 > Y 说明x的取值大了,然后解得区间就变成 right = mid [left , mid]
继续查找至循环结束,mid就是解
#include<iostream>#include<cstdio>#include<cmath>using namespace std;const double eps = 1e-8;//精度double f(double x){return 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x;}int main(){int t;scanf("%d",&t);while(t--){int Y,flag = 0;scanf("%d",&Y);double left = 0,right = 100.0,mid;if(Y - 6 < 0){printf("No solution!\n");continue;}if(f(0) <= Y && Y <= f(100)){while((right - left) > eps)// (left - right) < eps 这样和下面会出现矛盾,当left 等于right 时0 < eps 会进入死循环,所以反过来写{mid = (left + right) / 2.0;double sum = f(mid);if(sum > Y-6){right = mid;}else if(sum < Y-6){left = mid;}}printf("%.4lf\n",mid);continue;}printf("No solution!\n");}return 0;}
- hdu2199(方程求值二分法)
- 二分法HDU2199
- HDU2199二分法求根
- hdu2199 二分枚举解高次方程
- 二分法求值
- 方程求值
- 方程求根二分法
- 二分法解方程MATLAB
- 方程求根二分法
- 二分法解非线性方程
- 求解方程(二分法)
- 二分法:解方程
- 二分法求方程根
- 二分法求解方程解
- HDU2199
- hdu2199
- HDU2199
- hdu2199
- JSP HTML中文乱码解决参照
- onvif学习5-视频点播实现
- const char*转char*
- Effective C++ 学记之13 以对象管理资源
- HDU 3549 Flow Problem
- hdu2199(方程求值二分法)
- java.lang.IllegalStateException: getOutputStream() has already been called for this response
- bio 与buffer_head 的区别和联系
- Android中AsyncTask的使用详解
- 动态管理视图和函数笔记-sql server 2005的一些动态函数
- 判断文件目录,并创建
- 覆写Button中的onClick函数时注意
- 和菜鸟一起学linux之本地git中心仓库建立
- JQuery验证 [注册]