UVA 10341 Solve It 二分
阿新 • • 發佈:2019-02-02
#include <cstdio> #include <cstring> #include <cmath> #include <vector> #include <iostream> #include <algorithm> 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; int main() { int p,q,r,s,t,u; while(scanf("%d%d%d%d%d%d",&p,&q,&r,&s,&t,&u)!=EOF) { if(f(1)>eps||f(0)<-eps)printf("No solution\n"); else { double x=0,y=1.0,mid; while(y-x>1e-7)//1e-6以上錯誤。。 { mid=(x+y)/2; if(f(mid)<0)y=mid; else x=mid; } printf("%.4lf\n",mid); } } return 0; } /* 方程左邊構成的函式式減函式,所以當f(0)>=0&&f(1)<=0時有唯一解,否則無解 */