1507: 超大型LED显示屏
Time Limit: 1 Sec Memory Limit:128 Mb Submitted:625 Solved:331Description
Input
输入包含不超过100组数据。每组数据第一行为"START hh:mm:ss",表示比赛开始时刻为hh:mm:ss。最后一行为"END hh:mm:ss",即比赛结束时刻。二者之间至少会有一个SCORE信息,格式为"SCORE hh:mm:ss team score",其中team要么是"home"(主场)要么是"guest"(客场), score表示得分,为1,2或者3。这些信息保证按照时间从早到晚的顺序排列,且任意两条SCORE信息的时刻均不相同。比赛开始时间不会早于9:00,结束时间不会晚于同一天的21:00。注意,如果比赛开始时间为09:00:00,结束时间为09:00:01,比赛长度为1秒钟,而不是2秒钟。
Output
对于每组数据,输出测试点编号和总耗电量。
Sample Input
START 09:00:00
SCORE 09:01:05 home 2
SCORE 09:10:07 guest 3
END 09:15:00
START 09:00:00
SCORE 10:00:00 home 1
SCORE 11:00:00 home 1
SCORE 12:00:00 home 1
SCORE 13:00:00 home 1
SCORE 14:00:00 home 1
SCORE 15:00:00 home 1
SCORE 16:00:00 home 1
SCORE 17:00:00 home 1
SCORE 18:00:00 home 1
SCORE 19:00:00 home 1
SCORE 20:00:00 home 1
END 21:00:00
Sample Output
Case 1: 9672
Case 2: 478800
Hint
Source
湖南省第十届大学生计算机程序设计竞赛题目不难,细心的做下去就好了,注意字符串的处理以及分数>10的情况,附上代码如下。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int a[]={6,2,5,5,4,5,6,3,7,6};
main (){
char s[50],p[50];
int h=0,m=0,sec=0,h1=0,m1=0,sec1=0,home=0,guest=0;
int t=0;
int sum=0;
int flag=0;
while(!flag){
if(scanf("%s",s)==EOF){
flag=1;
break;
}
if(!strcmp(s,"START"))
scanf("%d:%d:%d",&h,&m,&sec);
else if(!strcmp(s,"SCORE")){
scanf("%d:%d:%d %s",&h1,&m1,&sec1,p);
int tp=0;
if(home>=100)
tp+=a[home/100]+a[home/10%10]+a[home%10];
else if( home>=10)
tp+=a[home/10%10]+a[home%10];
else
tp+=a[home%10];
if(guest>=100)
tp+=a[guest/100]+a[guest/10%10]+a[guest%10];
else if( guest>=10)
tp+=a[guest/10%10]+a[guest%10];
else
tp+=a[guest%10];
sum+=(((h1*60*60+m1*60+sec1)-(h*60*60+m*60+sec))*tp);
h=h1,m=m1,sec=sec1;
int tmp;
if(strcmp(p,"home")){
scanf("%d",&tmp);
home+=tmp;
}
else{
scanf("%d",&tmp);
guest+=tmp;
}
}
else {
scanf("%d:%d:%d",&h1,&m1,&sec1);
int tp=0;
if(home>=100)
tp+=a[home/100]+a[home/10]+a[home%10];
else if( home>=10)
tp+=a[home/10]+a[home%10];
else
tp+=a[home%10];
if(guest>=100)
tp+=a[guest/100]+a[guest/10]+a[guest%10];
else if( guest>=10)
tp+=a[guest/10]+a[guest%10];
else
tp+=a[guest%10];
sum+=(((h1*60*60+m1*60+sec1)-(h*60*60+m*60+sec))*tp);
printf("Case %d: %d\n",++t,sum);
sum=0,home=0,guest=0;
}
}
}