蓝桥杯航班时间

蓝桥杯其他真题点这里👈

java 复制代码
//飞行时间 - 时差 = 已过去的时间1
//飞行时间 + 时差 = 已过去的时间2
//两个式子相加会发现 飞行时间 = 两段时间差的和 >> 1

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main{
    static int n;
    static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args)throws IOException {
        n = Integer.parseInt(in.readLine());
        while (n -- > 0){
            
            //读取两个输入数据,每个输入数据里都含有出发点出发时间,目标地落地时间,跨越天数
            String t1 = in.readLine();
            String t2 = in.readLine();

            //两段时间差的和 >> 1
            int time = get_time(t1) + get_time(t2) >> 1;
            int hour = time / 3600;
            int minute = time % 3600 / 60;
            int second = time % 60;
            System.out.printf("%02d:%02d:%02d\n",hour,minute,second);
        }
        in.close();
    }

    //计算两段时间的差
    public static int get_time(String t){
        //统一格式,没有跨越天数就加上" (+0)"
        if (t.charAt(t.length() - 1) != ')') t += " (+0)";

        //将时间分成三段,有出发点出发时间,目标地落地时间,跨越天数
        String[] time = t.split(" ");
    
        //出发点出发时间的时分秒
        String[] start = time[0].split(":");
        int h1 = Integer.parseInt(start[0]);
        int m1 = Integer.parseInt(start[1]);
        int s1 = Integer.parseInt(start[2]);

        //目标点落地时间的时分秒
        String[] arrive = time[1].split(":");
        int h2 = Integer.parseInt(arrive[0]);
        int m2 = Integer.parseInt(arrive[1]);
        int s2 = Integer.parseInt(arrive[2]);

        //跨越天数
        int d = time[2].charAt(2) - '0';

        //计算两端时间的差
        return get_seconds(h2,m2,s2) - get_seconds(h1,m1,s1) + d * 3600 * 24;
    }

    //将时间转成秒来计算会比较方便
    public static int get_seconds(int h,int m,int s){
        return h * 3600 + m * 60 + s;
    }
}
相关推荐
CV_J6 小时前
安装kibana
java·elasticsearch·spring cloud·docker·容器
莫非王土也非王臣7 小时前
深度学习之对比学习
人工智能·深度学习·学习
Wzx1980127 小时前
doker深学习
学习·docker
码农水水8 小时前
国家电网Java面试被问:TCP的BBR拥塞控制算法原理
java·开发语言·网络·分布式·面试·wpf
2013092416278 小时前
1968年 Hart, Nilsson, Raphael 《最小成本路径启发式确定的形式基础》A* 算法深度研究报告
人工智能·算法
如何原谅奋力过但无声8 小时前
【力扣-Python-滑动窗口经典题】567.字符串的排列 | 424.替换后的最长重复字符 | 76.最小覆盖子串
算法·leetcode
InterestOriented8 小时前
破解银发学习痛点 兴趣岛 “普惠 + 品质” 模式打造积极老龄化范本
大数据·人工智能·学习
qq_336313938 小时前
java基础-网络编程-TCP
java·网络·tcp/ip
咕噜咕噜啦啦8 小时前
Java期末习题速通
java·开发语言
HyperAI超神经8 小时前
IQuest-Coder-V1:基于代码流训练的编程逻辑增强模型;Human Face Emotions:基于多标注维度的人脸情绪识别数据集
人工智能·深度学习·学习·机器学习·ai编程