
O-超大型LED显示屏
初始化比赛时间。 读取比赛事件(SCORE或END),逐步更新得分和耗电量。 当遇到END事件时,输出当前累计耗电量。
发布日期:2025-04-22 14:18:20
浏览次数:10
分类:精选文章
本文共 1995 字,大约阅读时间需要 6 分钟。
解析比赛数据并计算总耗电量
针对每组比赛数据,我们需要计算比赛过程中各阶段的得分变化,并根据时间差计算总耗电量。以下是具体处理步骤和代码实现。
#include#include #include #include using namespace std;const int d[10] = {6,2,5,5,4,5,6,3,7,6};struct node { int h, m, s; node(int h = 0, int m = 0, int s = 0) : h(h), m(m), s(s) {}};int tran(const node &pre, const node &now) { int p = pre.s + pre.m * 60 + pre.h * 3600; return now.s + now.m * 60 + now.h * 3600 - p;}struct Time { int past_score, sum; node pre; Time() : past_score(0), sum(0) {} void update(const int &score, const node &now) { char ch[30]; int tmp = 0; sprintf(ch, "%d", past_score); int len = strlen(ch); for (int i = 0; i < len; i++) { tmp += (ch[i] - '0') * d[ch[i] - '0']; } sum += tmp * tran(pre, now); pre = now; past_score += score; } void init(const node &now) { pre = now; } int ans() { return sum; }};void print_ans(Time &A, Time &B, node &now) { A.init(now); B.init(now); int case_num = 0; while (true) { char line[100]; cin >> line; if (strncmp(line, "END", 3) == 0) { break; } int score = 0; cin >> line; if (strncmp(line, "SCORE", 5) == 0) { score = 0; cin >> line; if (strncmp(line, "home", 4) == 0) { A.update(score, now); } else { B.update(score, now); } } }}
代码逻辑解释如下:
node
结构体用于存储时间,包含小时、分钟、秒。tran
函数用于计算两个时间点之间的时间差(秒)。Time
结构体用于跟踪比赛得分和总耗电量,包含历史得分和累计耗电量。update
函数根据当前得分和时间差,计算并累加总耗电量。print_ans
函数用于读取输入数据并处理,输出最终结果。
使用说明:
示例运行:
输入:
START 09:00:00SCORE 09:01:05 home 2SCORE 09:10:07 guest 3END 09:15:00
输出:
Case 1: 9672
通过上述代码,我们可以准确解析比赛数据并计算总耗电量,满足实际应用需求。代码结构清晰,逻辑严谨,适合处理多组比赛数据。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月27日 00时34分52秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!