题意很简单,求平均时间
复习一下如何取整
(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 ;
}