记录编号 |
102061 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[UVa 10341] 解方程 |
最终得分 |
100 |
用户昵称 |
752199526 |
是否通过 |
通过 |
代码语言 |
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;
}