算法1
思路:计算时差的时候,相差时间-时区差+相差时间+时区差=2*相差时间
这个题难度是:处理输入时间,因为如果跨天,后面有(+1),计算的时候把所有时间化成秒来算
C++ 代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
int get_seconds(int h,int m,int s){
return h*3600+m*60+s;
}
int get_time()
{
string line;
getline(cin, line);
if (line.back() != ')') line += " (+0)"//.back()是字符串最后一个字符,处理没有跨天的数据
int h1, m1, s1, h2, m2, s2, d;
sscanf(line.c_str(), "%d:%d:%d %d:%d:%d (+%d)", &h1, &m1, &s1, &h2, &m2, &s2, &d);
return get_seconds(h2, m2, s2) - get_seconds(h1, m1, s1) + d * 24 * 3600;
}
int main(){
int n;
scanf("%d",&n);
string line;
getline(cin,line);//忽略第一行的回车
while(n--){
int time =(get_time()+get_time())/2;
int hour=time/3600,minute=time%3600/60,second=time%60;
printf("%02d:%02d:%02d\n",hour,minute,second);
}
return 0;
}