题意描述很垃圾,后来看别人代码才知道怎么回事:对(题目所给d/总时间:所有时间加起来)四舍五入并取整,然后对结果/60得到用了几分钟;对结果%60得到用了几秒。
presentation error一次,因为没注意到输出的队伍编号占3格,要用%3d
代码
#include<bits/stdc++.h> using namespace std; #define maxn 100 #define rep(i,a,b) for(int i=(a);i<(b);i++) #define ll long long char s[maxn][maxn]; int vis[maxn][maxn]; int main() { int n; double d; scanf("%d%lf",&n,&d); int x; while(~scanf("%d",&x)){ int c3=0; int f=1; rep(i,0,n){ char x1,x2,x3,x4,x5; int m1,m2,m3; scanf(" %c:%c%c:%c%c",&x1,&x2,&x3,&x4,&x5); if(x1=='-') f=0; m1=x1-'0'; m2=(x2-'0')*10+x3-'0'; m3=(x4-'0')*10+x5-'0'; c3+=m1*3600+m2*60+m3; } int ans1,ans2; ans1=(int)(c3/d+0.5)/60; ans2=(int)(c3/d+0.5)%60; if(f) printf("%3d:%2d:%02d min/km ",x,ans1,ans2); else printf("%3d: - ",x); } return 0; }