标签:des style blog http color os io strong for
链接:http://poj.org/problem?id=1064
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 23896 | Accepted: 5118 |
Description
Input
Output
Sample Input
4 11 8.02 7.43 4.57 5.39
Sample Output
2.00
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
要注意控制精度,以及最后的舍入误差。
脑残犯了个基础的错误,
// sum+=(int)str[i]/x;
这样强制转型,就有问题了,应该把要转型的部分用括号括起来,两边都要
舍入误差在于,如果结果是1.0099999
应该输出1.00,而不是1.01
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <math.h> 5 6 #define eps 1e-6 7 8 double str[10005]; 9 int n,k; 10 11 int judge(double x) 12 { 13 int sum=0; 14 for(int i=0; i<n; i++) 15 { 16 sum+=(int)(str[i]/x); 17 } 18 return sum; 19 } 20 21 int main() 22 { 23 int i,j; 24 while(scanf("%d%d",&n,&k)!=EOF) 25 { 26 double left=0.0,right,sum=0.0,maxx=0.0; 27 //ght=n/k; 28 for(i=0; i<n; i++) 29 { 30 scanf("%lf",&str[i]); 31 //if(maxx < str[i]) 32 // maxx = str[i]; 33 //sum+=str[i]; 34 maxx=maxx<str[i]?str[i]:maxx; 35 } 36 right=maxx; 37 while(right-left > eps) 38 { 39 double mid=(left+right)/2.0; 40 if(judge(mid) >= k ) 41 left=mid; 42 else 43 right=mid; 44 } 45 int tmp=right * 100; 46 double ans=(double)tmp * 0.01; 47 printf("%.2lf\n",ans); 48 } 49 return 0; 50 }
poj 1064 (二分+控制精度) && hdu 1551
标签:des style blog http color os io strong for
原文地址:http://www.cnblogs.com/ccccnzb/p/3934692.html