您的位置:首页 > 其它

hdu_1036(取整和格式控制)

2017-08-12 09:25 204 查看
题意很简单,求平均时间

复习一下如何取整

(int) fl 是直接向下取整 == floor(fl)

向上取整 (int)(fl+1) == ceil(fl)

四舍五入 (int)(fl+0.5)

技巧:输入时候决定什么时候读入int,什么时候读入char有时候可以省很多事情

代码:

1 #include<cstdio>
2 #include<cstring>
3 #include<algorithm>
4 using namespace std;
5 int hour, minutes, second;
6 bool fl;int t;
7 char tm[7];
8 void solve(){
9     if(tm[0]=='-'){fl = 0; return;}
10     hour += tm[0]-'0';
11     minutes = minutes + (tm[2]-'0')*10+(tm[3]-'0');
12     second = second + (tm[5]-'0')*10+(tm[6]-'0');
13 }
14 void pout(){
15     if(t/100==0) printf(" ");
16     if(t/10==0) printf(" ");
17     printf("%d",t);
18     printf(": %d:",minutes);
19     if(second/10==0) printf("0");
20     printf("%d min/km\n",second);
21 }
22 int main()
23 {
24     int n;  double d;
25     char tt[3];
26     while(~scanf("%d%lf",&n,&d))
27     {
28         while(~scanf("%d",&t)){
29             hour = 0, minutes = 0; second = 0;
30             fl = 1;
31             for(int i = 0; i < n; i++){
32                 scanf("%s",&tm);
33                 solve();
34             }
35             if(fl==0){
36                 if(t/100==0) printf(" ");
37                 if(t/10==0) printf(" ");
38                 printf("%d",t);
39                 printf(": -\n");
40                 continue;
41             }
42             double allminutes = hour*60+minutes+(double)second/60;
43             //printf("min = %lf\n",allminutes);
44             allminutes /= d;
45             minutes = (int)allminutes;
46             second =(int)((allminutes-(int)allminutes)*60+0.5);
47             if(second==60){
48                 second = 0;
49                 minutes ++;
50             }
51             pout();
52         }
53     }
54     return 0;
55 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: