题目
思路
去:起飞时间 +/-时差 +飞行时间 = 降落时间
回来:起飞时间 +/-时差 +飞行时间 = 降落时间
两边加起来:(因为对往返对时差的操作是逆操作,一架就消掉了)
飞行时间=(降落时间-起飞时间+降落时间-起飞时间)/2
代码
#include<iostream>
#include<cstring>
using namespace std;
int get_second(int d,int m,int s)
{
return d*3600+m*60+s;
}
int get_time()
{
string line;
getline(cin,line);
if(line.back()!=')') line+=" (+0)";
int d1,m1,s1,d2,m2,s2,t;
sscanf(line.c_str(),"%d:%d:%d %d:%d:%d (+%d)",&d1,&m1,&s1,&d2,&m2,&s2,&t);
return get_second(d2,m2,s2)+t*24*3600-get_second(d1,m1,s1);
}
int main()
{
int t;
scanf("%d",&t);
cin.ignore(); //过滤掉scanf没过滤的换行
while(t--)
{
int time=(get_time()+get_time())/2;
int day=time/3600,minute=time%3600/60,second=time%3600%60;
printf("%02d:%02d:%02d\n",day,minute,second);
}
return 0;
}