博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSU1507 超大型LED显示屏_模拟题
阅读量:4155 次
发布时间:2019-05-26

本文共 4058 字,大约阅读时间需要 13 分钟。

**CSU1507 超大型LED显示屏_模拟题**                Time Limit: 1 Sec  Memory Limit: 128 MB                Submit: 39     Solved: 14

Description

这里写图片描述

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

AC代码

思路很清晰,写的有点多

//模拟题,每次读一行,分别计算时间和耗电量#include 
int Isstart(char c[]) //START{ if(c[1] == 'T' && c[2] == 'A') return 1; else return 0;}int Isend(char c[]) //END{ if(c[0] == 'E' && c[1] == 'N') return 1; else return 0;}int Countss(char c[]) //以秒计算时间{ int h, m, s; if(c[0] == 'S') { h = 3600 * (10 * (c[6] - '0') + (c[7] - '0')); m = 60 * (10 * (c[9] - '0') + (c[10] - '0')); s = 10 * (c[12] - '0') + (c[13] - '0'); } else if(c[0] == 'E') { h = 3600 * (10 * (c[4] - '0') + (c[5] - '0')); m = 60 * (10 * (c[7] - '0') + (c[8] - '0')); s = 10 * (c[10] - '0') + (c[11] - '0'); } return h + m + s;}int horg(char c[]) //home or guest{ if(c[15] == 'h') return 1; else return 0;}int Countscore(int initial, char c[]) //home or guest的得分{ if(horg(c)) return initial + (c[20] - '0'); else return initial + (c[21] - '0');}//计算当前home或者guest耗电量,home得分guest耗电量不变,guest得分home耗电量不变int Countccc(int homeguest, char c[], int le[]){ int hgc; if(homeguest <= 9) //个位数 { for(int i= 0; i < 10; i++) if(homeguest == i) { hgc = le[i]; break; } } else if(homeguest >= 10 && homeguest <= 99) //两位数 { int shang = homeguest / 10; int yushu = homeguest % 10; hgc = 0; for(int i = 0; i < 10; i++) { if(shang == i) hgc += le[i]; if(yushu == i) hgc += le[i]; } } else if(homeguest >= 100 && homeguest <= 999) //三位数 { int shan = homeguest / 100; int shiw = homeguest / 10 % 10; int gew = homeguest % 10; hgc = 0; for(int i = 0; i < 10; i++) { if(shan == i) hgc += le[i]; if(shiw == i) hgc += le[i]; if(gew == i) hgc += le[i]; } } return hgc;}int main(){ int led[11] = {
6, 2, 5, 5, 4, 5, 6, 3, 7, 6}; //对应的耗电量 char s[30]; int caseout = 0; //编号 int charge = 0; //统计最终耗电量 while(gets(s)) { int time1, time2; int homec, guestc, homesco, guestsco; if(Isstart(s)) //START { time1 = Countss(s); homesco = 0; guestsco = 0; homec = 6; guestc = 6; } else if(Isend(s)) //END { caseout++; time2 = Countss(s); charge += (time2 - time1) * (homec + guestc); printf("Case %d: %d\n", caseout, charge); charge = 0; //// } else //SCORE { time2 = Countss(s); charge += (time2 - time1) * (homec + guestc); time1 = time2; //// if(horg(s)) //home得分, guest不变 { homesco = Countscore(homesco, s); //当前得分 homec = Countccc(homesco, s, led); } else //guest得分, home不变 { guestsco = Countscore(guestsco, s); guestc = Countccc(guestsco, s, led); } } } return 0;}
你可能感兴趣的文章
第2章实验补充C语言中如何计算补码
查看>>
深入入门正则表达式(java) - 命名捕获
查看>>
使用bash解析xml
查看>>
android系统提供的常用命令行工具
查看>>
【Python基础1】变量和字符串定义
查看>>
【Python基础2】python字符串方法及格式设置
查看>>
【Python】random生成随机数
查看>>
【Python基础3】数字类型与常用运算
查看>>
【Python基础4】for循环、while循环与if分支
查看>>
【Python基础6】格式化字符串
查看>>
【Python基础7】字典
查看>>
【Python基础8】函数参数
查看>>
【Python基础9】浅谈深浅拷贝及变量赋值
查看>>
Jenkins定制一个具有筛选功能的列表视图
查看>>
【Python基础10】探索模块
查看>>
【Python】将txt文件转换为html
查看>>
[Linux]Shell脚本实现按照模块信息拆分文件内容
查看>>
idea添加gradle模块报错The project is already registered
查看>>
在C++中如何实现模板函数的外部调用
查看>>
在C++中,关键字explicit有什么作用
查看>>