[二分&&高精度]Solve It uva10341
2014-02-20 17:00
127 查看
Problem F
Solve It
Input: standard input
Output: standard output
Time Limit: 1 second
Memory Limit: 32 MB
Solve the equation:
p*e-x + q*sin(x) + r*cos(x) + s*tan(x) + t*x2 + u = 0
where 0 <= x <= 1.
0). There will be maximum 2100 lines in the input file.
Mustaq Ahmed
题意:求一个数x(0<=x<=1)使得函数 p*e-x + q*sin(x) + r*cos(x) + s*tan(x) + t*x2 + u = 0
由于函数时单调的,所以可以使用二分查找。
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int p,q,r,s,t,u;
double solve(double x)
{
return (p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u);
}
int main()
{
while(cin>>p>>q>>r>>s>>t>>u)
{
if(solve(0)<0||solve(1)>0) cout<<"No solution"<<endl;
else
{
double left=0,right=1,mid=(left+right)/2;
while(abs(solve(mid))>1e-10)
{
if(solve(mid)>0) left=mid;
else if(solve(mid)<0) right=mid;
mid=(left+right)/2;
}
cout<<fixed<<setprecision(4)<<mid<<endl;
}
}
return 0;
}
Solve It
Input: standard input
Output: standard output
Time Limit: 1 second
Memory Limit: 32 MB
Solve the equation:
p*e-x + q*sin(x) + r*cos(x) + s*tan(x) + t*x2 + u = 0
where 0 <= x <= 1.
Input
Input consists of multiple test cases and terminated by an EOF. Each test case consists of 6 integers in a single line: p, q, r, s, t and u (where0 <= p,r <= 20 and -20 <= q,s,t <=0). There will be maximum 2100 lines in the input file.
Output
For each set of input, there should be a line containing the value of x, correct upto 4 decimal places, or the string "No solution", whichever is applicable.Sample Input
0 0 0 0 -2 1
1 0 0 0 -1 2
1 -1 1 -1 -1 1
Sample Output
0.7071
No solution
0.7554
Mustaq Ahmed
题意:求一个数x(0<=x<=1)使得函数 p*e-x + q*sin(x) + r*cos(x) + s*tan(x) + t*x2 + u = 0
由于函数时单调的,所以可以使用二分查找。
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int p,q,r,s,t,u;
double solve(double x)
{
return (p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u);
}
int main()
{
while(cin>>p>>q>>r>>s>>t>>u)
{
if(solve(0)<0||solve(1)>0) cout<<"No solution"<<endl;
else
{
double left=0,right=1,mid=(left+right)/2;
while(abs(solve(mid))>1e-10)
{
if(solve(mid)>0) left=mid;
else if(solve(mid)<0) right=mid;
mid=(left+right)/2;
}
cout<<fixed<<setprecision(4)<<mid<<endl;
}
}
return 0;
}
相关文章推荐
- [牛顿法 || 二分] BZOJ 1213 [HNOI2004]高精度开根 & 51Nod 1166 大数开平方
- 整体二分初探 两类区间第K大问题 poj2104 & hdu5412
- 第 2 章 第 9 题 顺序 & 二分搜索效率分析问题
- HiHoCoder-第三十九周--二分·归并排序之逆序对
- ACM k进制高精度优化 URAL 1803 The Czechs' Rifles 滚动数组
- 【二分】【高精度】Vijos P1472 教主的集合序列
- OpenJudge百炼-2952-循环数 & poj-1047-Round and Round We Go-C语言-高精度计算
- “玲珑杯”ACM比赛 Round #19题解&源码【A,规律,B,二分,C,牛顿迭代法,D,平衡树,E,概率dp】
- 【二分答案 && 贪心】codeforces-847E Packmen
- HDU 2852 KiKi's K-Number(树状数组+二分)
- 51nod 1090 & 1267 【二分简单题】
- POJ2413 How many Fibs?【高精度】【二分】
- 【杭电oj】5101 - Select(STL & 二分)
- UVa 10303 How Many Trees? (卡特兰数&高精度)
- 【Cuda并行编程之一】二分查找的探究以及Cuda的简单实现&&相关面试题介绍
- hdu1816 Get Luffy Out *--二分 & 2-sat
- HDU1529:Cashier Employment(差分约束 & 二分)
- hdu-4576-Robot 二分&DP
- nyoj 86 找球号(一)<水,二分>
- hdu 2199 高精度二分模板