hdu_1036(取整和格式控制)

时间:2023-03-08 21:00:23

题意很简单,求平均时间

复习一下如何取整

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

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

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

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

代码:

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int hour, minutes, second;
bool fl;int t;
char tm[];
void solve(){
if(tm[]=='-'){fl = ; return;}
hour += tm[]-'';
minutes = minutes + (tm[]-'')*+(tm[]-'');
second = second + (tm[]-'')*+(tm[]-'');
}
void pout(){
if(t/==) printf(" ");
if(t/==) printf(" ");
printf("%d",t);
printf(": %d:",minutes);
if(second/==) printf("");
printf("%d min/km\n",second);
}
int main()
{
int n; double d;
char tt[];
while(~scanf("%d%lf",&n,&d))
{
while(~scanf("%d",&t)){
hour = , minutes = ; second = ;
fl = ;
for(int i = ; i < n; i++){
scanf("%s",&tm);
solve();
}
if(fl==){
if(t/==) printf(" ");
if(t/==) printf(" ");
printf("%d",t);
printf(": -\n");
continue;
}
double allminutes = hour*+minutes+(double)second/;
//printf("min = %lf\n",allminutes);
allminutes /= d;
minutes = (int)allminutes;
second =(int)((allminutes-(int)allminutes)*+0.5);
if(second==){
second = ;
minutes ++;
}
pout();
}
}
return ;
}