下面这个是第一次的代码,太挫了,要重新写一个思路清晰的。
#include<cstdio>
int pre[]= {6,2,5,5,4,5,6,3,7,6};
char a[20],b[20],c[20],d[20],e[20];
int score;
int main(void)
{
int ct=1;
while(~scanf("%s%s",a,b))
{
int ans1=0,ans2=0,s1=0,s2=0;
int flag=1,cnt=1;
while(true)
{
if(flag)
{
scanf("%s%s",c,d);
flag=0;
if(c[0]=='E') cnt=0;
if(cnt)
{
scanf("%s%d",e,&score);
}
int m1=((d[0]*10+d[1])-(b[0]*10+b[1]))*3600;
int m2=((d[3]*10+d[4])-(b[3]*10+b[4]))*60;
int m3=((d[6]*10+d[7])-(b[6]*10+b[7]));
int m=m1+m2+m3;
if(s1==0) ans1+=m*pre[0];
else
{
int num=s1;
while(num>0)
{
int a=num%10;
ans1+=m*pre[a];
num/=10;
}
}
if(s2==0) ans2+=m*pre[0];
else
{
int num=s2;
while(num>0)
{
int a=num%10;
ans2+=m*pre[a];
num/=10;
}
}
if(!cnt) break;
if(cnt)
{
if(e[0]=='h') s1+=score;
else s2+=score;
}
}
else
{
scanf("%s%s",a,b);
flag=1;
if(a[0]=='E') cnt=0;
if(cnt)
{
scanf("%s%d",e,&score);
}
int m1=((b[0]*10+b[1])-(d[0]*10+d[1]))*3600;
int m2=((b[3]*10+b[4])-(d[3]*10+d[4]))*60;
int m3=((b[6]*10+b[7])-(d[6]*10+d[7]));
int m=m1+m2+m3;
if(s1==0) ans1+=m*pre[0];
else
{
int num=s1;
while(num>0)
{
int a=num%10;
ans1+=m*pre[a];
num/=10;
}
}
if(s2==0) ans2+=m*pre[0];
else
{
int num=s2;
while(num>0)
{
int a=num%10;
ans2+=m*pre[a];
num/=10;
}
}
if(!cnt) break;
if(cnt)
{
if(e[0]=='h') s1+=score;
else s2+=score;
}
}
}
printf("Case %d: %d\n",ct++,ans1+ans2);
}
return 0;
}