题目:略;
分析:设第一去程起点时间为:s1,终点时间为:e1;
回来时起点时间:s2,终点时间为:e2;
飞行时间为:f 第一地点到第二地点时差为:t;
那么则起点时间加上飞行时间+俩地的时差等于终点到达时间;
即s1+f+t=e1;
s2+f-t=e2;
备注:(为啥上面俩不等式之间一个是t,一个是-t,因为列入北京到美国时差是+12,那么美国到北京时差就是-12);
此外我们还可以这样理解,输入的俩段时间都是自己本地时间,一来一去时差抵消,所以所求的答案就是这俩段时间差之和/2;
注意:本题注意字符串的输入处理;
# include <bits/stdc++.h>
using namespace std;
const int N=100;
char s[N];
int starct(int x,int y,int z)
{
int time=x*60*60+y*60+z;
return time;
}
int end()
{
int h2,m2,s2;
scanf("%d:%d:%d",&h2,&m2,&s2);
char s;
char day;
int time=h2*60*60+m2*60+s2;
while((s=getchar())!='\n'&&s!='\r')
{
if(s=='(')
{
getchar();
day=getchar();
time+=(day-'0')*3600*24;
}
}
return time;
}
int main()
{
int t;
cin>>t;
int a=0;
while(t--)
{
a=0;
int h1,m1,s1;
int h4,m4,s4;
scanf("%d:%d:%d",&h1,&m1,&s1);
int time1=starct(h1,m1,s1);
int time2=end();
scanf("%d:%d:%d",&h4,&m4,&s4);
int time4=starct(h4,m4,s4);
int time3=end();
int timex=((time2-time1)+(time3-time4))/2;
int x,y,z;
x=timex/3600;
timex%=3600;
y=timex/60;
z=timex%60;
printf("%02d:%02d:%02d",x,y,z);
cout<<endl;
}
}