Problem 1164 Average is not Fast Enough!.
题意
- 计算平均成绩 min/km(一千米要跑多少分钟)
- 输入:
赛段数n(int 1<=n<=20),总赛程d(double 0<=d<=200)
队伍编号no,赛程1的成绩,赛程2的成绩,……(h:mm:ss)
-:–:--表示弃赛
EOF结束 - 输出:
no(右对齐3): 分钟:秒(00) min/km
若有人弃赛
no(右对齐3): -
思路
对各种输入输出格式不熟哭死
- 对每一个队伍:
逐一读入各赛段的成绩,如果有h=’-’,跳过剩下的成绩,输出’-’
否则累加h、m、s,全部换算成s,s/d计算s/km,转换成min/km
代码
#include<cstdio>
using namespace std;
int main(){
int n, no, m, s;
char h, temp[400];
double d, sum;
scanf("%d%lf", &n, &d);
while(scanf("%d", &no)!=EOF){
sum = 0;
for(int i=0; i<n; i++){
scanf(" %c", &h);
if(h=='-'){
gets(temp);
break;
}
scanf(":%d:%d", &m, &s);
sum += (h-'0')*3600;
sum += m*60;
sum += s;
}
if(h=='-')
printf("%3d: -\n", no);
else{
sum = sum/d;
m = sum/60;
s = (int)(sum - m*60 + 0.5);
if(s==60){
m++;
s = 0;
}
printf("%3d: %d:%02d min/km\n", no, m, s);
}
}
return 0;
}