CSU OJ1507超大型LED显示屏

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
想法:
水题
代码:
#include<stdio.h>
#include<string.h>
char w[20];
int home[1010];
int guest[1010];
int time[1010];
int val[10]={6,2,5,5,4,5,6,3,7,6};
struct node
{
    int h;
    int m;
    int s;
}sec[1010];
int main()
{
    int count=0;
    int yy=1;
   while(scanf("%s %d:%d:%d",w,&sec[count].h,&sec[count].m,&sec[count].s)!=EOF)
   {
     count++;
     int count1=1,count2=1;
     while(scanf("%s %d:%d:%d",w,&sec[count].h,&sec[count].m,&sec[count].s))
     {
         //printf("%d %d %d\n",sec[count].h,sec[count].m,sec[count].s);
         if(strcmp(w,"SCORE")==0)
         {
             char d[20];int xx;
             scanf("%s %d",d,&xx);
             if(strcmp(d,"home")==0)
            {
                home[count1]=home[count1-1]+xx;
            }
            else
            {
                home[count1]=home[count1-1];
            }
            if(strcmp(d,"guest")==0)
            {
                guest[count2]=guest[count2-1]+xx;
            }
            else
            {
                guest[count2]=guest[count2-1];
            }
            count1++;
            count2++;
         }
         if(strcmp(w,"END")==0)
         {
             count++;
             break;
         }
         count++;
     }
     int i,j;
     /*for(i=0;i<count1;i++)
     {
         printf("%d %d\n",home[i],guest[i]);
     }*/
     long long sum=0;
     for(i=1;i<count;i++)
     {
         int sum1=0,sum2=0,js;
         if(home[i-1]==0)
         {
             sum1+=val[0];
         }
         else while(home[i-1])
         {
           js=home[i-1]%10;
           sum1+=val[js];
           home[i-1]/=10;
         }
         int js1;
         if(guest[i-1]==0)
         {
             sum2+=val[0];
         }
        else while(guest[i-1])
         {
           js1=guest[i-1]%10;
           sum2+=val[js1];
           guest[i-1]/=10;
         }


         time[i]=(sec[i].h-sec[i-1].h)*3600+(sec[i].m-sec[i-1].m)*60+(sec[i].s-sec[i-1].s)*1;
         sum+=time[i]*(sum1+sum2);
         //printf("%d\n",time[i]);
         //printf("%d\n",sum1+sum2);
     }
     printf("Case %d: %lld\n",yy++,sum);
    count=0;
   }
   return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值