本文主要是介绍uva10341 Solve It,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
做这道题的感觉就是,ac离你很近,但怎么都ac不了。。。
函数解析式是单调递减的,用高中老师就教过的二分法可以快速算出来
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>using namespace std;double p,q,r,s,t,u;double value(double x)
{return p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*(x)*(x)+u;
}int main()
{double i,j,ans;int flag;while(scanf("%lf %lf %lf %lf %lf %lf",&p,&q,&r,&s,&t,&u)!=EOF){flag=0;i=0,j=1;if(value(0)<0 || value(1)>0) {//最后加了这句才acprintf("No solution\n");continue;}while(1){if(value(i)-value(j)<1e-9){printf("%.4lf\n",(i+j)/2);flag=1;break;}if(value(i)<0||value(j)>0)break;ans=value((i+j)/2);if(ans>0)i=(i+j)/2;elsej=(i+j)/2;}if(flag==0)printf("No solution\n");}return 0;
}
这篇关于uva10341 Solve It的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!