uva 10341 - Solve It
来源:互联网 发布:存储过程怎么执行sql 编辑:程序博客网 时间:2024/04/30 20:05
点击打开链接uva 10341
题目意思: 给定一个函数的表达式,然后给定系数值,要我们求出未知数x
解题思路: 1:由函数的性质可知,如果有解,那么将区间两个点带入求出的数值的乘积为负数。首先先判断这个函数是否有解,如果无解直接返回输出,有解进行二分查找
2:二分查找时候由于0=<x<=1,那么初始化left = 0 , right = 1,我习惯用迭代二分,所以这里用while循环代替递归,但是由于double类型的比较会有很大的误差,所以用left-right < 1e-9来判断相等而不是直接left-right == 0,然后我么用mid来带入函数,如果得到的值是大于0,那么这里是要向右递归的,因为这个函数是递减的,由f(0) > f(1) 可以知道,所以这里很平常的有些不同。
3:注意迭代二分的使用,注意double类型的比较
代码:
#include <algorithm>#include <iostream>#include <cstring>#include <string>#include <vector>#include <cstdio>#include <stack>#include <queue>#include <cmath>#include <set>using namespace stddouble p , q , r , s , t , u;void solve(){ double left , right , mid , tmp; double s1 , s2; s1 = p*(exp(0))+q*sin(0)+r*cos(0)+s*tan(0)+t*0+u; s2 = p*(exp(-1))+q*sin(1)+r*cos(1)+s*tan(1)+t*1+u; if(s1*s2 > 0) printf("No solution\n"); else{ left = 0.0 ; right = 1.00; while(right-left > 1e-9){//注意判断条件 mid = (left +right)/2;//中间值 tmp = p*(exp(-mid))+q*sin(mid)+r*cos(mid)+s*tan(mid)+t*mid*mid+u;//求出函数值 if(tmp < 0) right = mid;//小于0则要向左边二分 else left = mid;//否则右边二分 } printf("%.4lf\n" , mid);//输出的mid就是x值 }}int main(){ //freopen("input.txt" , "r" , stdin); while(scanf("%lf%lf%lf%lf%lf%lf" , &p,&q,&r,&s,&t,&u) != EOF) solve(); return 0;}
- UVa 10341-Solve It
- UVa 10341 - Solve It
- uva 10341 - Solve It
- uva 10341 - Solve It
- UVA - 10341 Solve It
- UVa 10341 - Solve It
- UVA 10341 - Solve It
- Uva 10341 Solve It
- UVa:10341 Solve It
- UVA 10341 Solve It
- UVa 10341 Solve It
- uva 10341 Solve It
- uva 10341 Solve It
- UVa 10341 - Solve It
- UVa 10341 - Solve It
- UVa 10341 - Solve It
- UVA 10341 Solve It
- UVa-10341-Solve It
- 【Linux】Redhat5.4基本使用
- Java批处理写数据库的实例代码
- Android(7) - 控件(View)之ZoomControls, Include, VideoView, WebView, RatingBar, Tab, Spinner, Chronomete
- 【SPFA】 hdu1596 find the safest road
- 永不停止的技术学习
- uva 10341 - Solve It
- hdu 2845 Beans
- Android EditText 详解Android2.2 API 中文文档系列(2) —— EditText
- paip.提升安全性-----时间判断
- Android2.2 API 中文文档系列(5) —— View详解
- Graph
- Android API 中文(13) —— ToggleButton
- Android2.2 API 中文文档系列(1) —— TextView
- 优化UITableView 性能