航班时间

题目 航班时间

image-cbff30ca

思路分析

去乘起飞时间+航行时间+时差=去乘降落时间 (公式一)

回程起飞时间+航行时间-时差=回程降落时间 (公式二)

求:航行时间

已知:去乘起飞时间,回程起飞时间,去乘降落时间,回程降落时间

根据公式一+公式二:

去乘起飞时间+回程起飞时间+2*航行时间=去乘降落时间+回程降落时间

航行时间=(去乘降落时间-去乘起飞时间+回程降落时间-回程起飞时间)/2

代码实现

#include<bits/stdc++.h>

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)";

    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 T;

    scanf("%d", &T);

    getchar();

    while (T -- )

    {

        int time = (get_time() + get_time()) / 2;

        int hours = time / 3600;

        int minutes = time % 3600 / 60;

        int seconds = time % 60;

        printf("%02d:%02d:%02d\n", hours, minutes, seconds);

    }

    return 0;

}

同类题型

视频讲解


⬅️ 日期问题 🏠 00-刷题理模型 ➡️ 智力测试