记录编号 102061 评测结果 AAAAAAAAAA
题目名称 [UVa 10341] 解方程 最终得分 100
用户昵称 Gravatar752199526 是否通过 通过
代码语言 C++ 运行时间 0.311 s
提交时间 2014-05-16 20:00:34 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<fstream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<assert.h>
#include<time.h>
#include<vector>
#include<stack>
#include<deque>
#include<queue>
#include<cstring>
#include<functional>
#include<cctype>
using namespace std;
ifstream fin("solveit.in");
ofstream fout("solveit.out");
double p,q,r,s,t,u;
double F(double x,double y)//求根
{
	double k=(x+y)/2,m,n,j;
	if(abs(y-x)<0.00000001)return k;
	m=p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u;
	n=p*exp(-y)+q*sin(y)+r*cos(y)+s*tan(y)+t*y*y+u;
	j=p*exp(-k)+q*sin(k)+r*cos(k)+s*tan(k)+t*k*k+u;
	if(m*j<0)return F(x,k);
	if(n*j<0)return F(k,y);
}
int main()
{
	fout<<setiosflags(ios::fixed)<<setprecision(4);
	fin>>p;
	do
	{
		fin>>q>>r>>s>>t>>u;
		double m=p*exp(0.0)+q*sin(0.0)+r*cos(0.0)+s*tan(0.0)+u;
		double n=p*exp(-1.0)+q*sin(1.0)+r*cos(1.0)+s*tan(1.0)+t+u;
		if(m>0&&n>0)fout<<"No solution"<<endl;//无解
		else
		{
			double k=F(0,1);
			if(m==0)fout<<0.0000<<endl;
			else if(k>0.00001)fout<<k<<endl;
			else fout<<"No solution"<<endl;
			
		}
	}while(fin>>p);
	//fout<<clock()/CLOCKS_PER_SEC<<endl;
	return 0;
}