Question:
Solve:
这个题写的怪无语的,思路的话很简单,把起止时间用秒表示,计算差值就行
但是需要注意:
计算的结果是取两次时间差值的平均值
不要漏掉getchar读掉的后缀的+n天
代码直接借鉴的评论区大佬的
Code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int t;
ll calc(){
//读入两个基本时间
int t1,h1,m1,t2,h2,m2;
scanf("%d:%d:%d %d:%d:%d",&t1,&h1,&m1,&t2,&h2,&m2);
char x;
int ans = 0;
//读入后缀天数
while((x = getchar()) != '\n')
if(x <= '9' && x >= '0')
ans = x - '0';
//计算起止时间的差值
ll num1 = t1*3600 + h1*60 + m1;
ll num2 = t2*3600 + h2*60 + m2 + ans*3600*24;
return num2 - num1;
}
int main(void)
{
cin >>t;
while(t--)
{
//读入两次时间计算差值并取平均值
ll res1 = calc();
ll res2 = calc();
ll res = (res1+res2)/2;
printf("%02d:%02d:%02d\n", res/3600, res%3600/60, res%60);
}
return 0;
}
最后附上蓝桥杯汇总链接:蓝桥杯C/C++A组省赛历年真题题解
声明:图片均来源于蓝桥杯官网,以个人刷题整理为目的,如若侵权,请联系删除~