二分求零点

这个很简单的啊
LA 10341

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<queue>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
#define F(x) (p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*(x)*(x)+u)
const double eps = 1e-14;
const int maxn = 100000;
int main()
{
	int p,q,r,s,t,u;	
	while(scanf("%d%d%d%d%d%d",&p,&q,&r,&s,&t,&u) == 6){
		double L = 0.0,R = 1.0;
		if(F(L) < -eps||F(R) > eps){
			printf("No solution\n");
		}else{
			double m;
			while(R-L > eps){
				m = L+(R-L)/2;
				if(F(m) <0) R = m;
				else L = m;			
			}
			printf("%.4lf\n",L);			
		}
	}
	return 0;
}
posted @ 2017-05-31 20:10  rsqppp  阅读(99)  评论(0)    收藏  举报