HDU-2199(search_bin-精度)

来源:互联网 发布:董小枫淘宝店 编辑:程序博客网 时间:2024/05/06 11:13

这个真的是,,,我头一次见到这么好玩的事情...

以前做题从来都没有考虑过这种事情呀,,,

精度处理不对,题目是出不来的,,,,这种可真是考验人的耐性呀,,,,下次直接把eps开的更小一点?

事实我刚才给证明了,,我第一次开的是1e-8显然不行,而小于1e-13的都可以..嘿嘿.所以以后一定要注意没事,使劲开吧....

呵呵.,因为你开的越小越接近答案...

吃一堑长一智呀.

贴出代码:

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>//因为所求函数的导数在0-100恒大于0,所以递增的函数;//而由于是递增的函数,所以最小值在0处取得,为6;小于6的都不行;const double eps=1e-15;double f(double x){return 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6;}int main(){int T;scanf("%d",&T);while(T--){double y;scanf("%lf",&y);if(y<6||y>f(100.0))printf("No solution!\n");else{double l=0,r=100,mid;while(l+eps<=r){mid=(l+r)/2;double p=f(mid);if(fabs(p-y)<=1e-5){printf("%.4lf\n",mid);break;}else if(p<y)l=mid;elser=mid;}if(l+eps>r)printf("No solution!\n");}}return 0;}


 

 

原创粉丝点击