HDU 1036 Average is not Fast Enough!

 

求几个人的平均速度,注意数据类型的转换和double类型的精度。
上代码
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int n,a;
 9     double d;
10     double ave;
11     char c[10];
12     scanf("%d%lf",&n,&d);
13     while(~scanf("%d",&a)){
14         ave=0;
15         int flag=0;
16 
17         for(int i=0;i<n;i++){
18             scanf(" %s",c);
19             if(c[0]=='-')
20                 flag=1;
21             if(flag!=1){
22                 ave=ave+((c[0]-'0')*60)+((c[2]-'0')*10)+c[3]-'0';
23                 ave=ave+((double)((c[5]-'0')*10+c[6]-'0')/60);
24             }
25         }
26         ave = ave/d;
27         printf("%3d: ",a);
28         int tmp=ave;
29         if((int)((ave-tmp)*60+0.5) == 60){//处理60秒问题
30             tmp++;ave=tmp;
31         }
32         if(flag == 0){
33             printf("%d:%.2d min/km\n",tmp,(int)((ave-tmp)*60+0.5));//精度
34         }
35         else
36             printf("-\n");
37     }
38     return 0;
39 }

 

posted @ 2016-01-24 11:25  闪耀子  阅读(122)  评论(0编辑  收藏  举报