蓝桥杯  航班时间

题目:略;

分析:设第一去程起点时间为: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;




    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值