航班时间 刷题笔记

思路参考大佬 个人空间 - AcWing

飞行时间推导

首先每组数据两行 

一行有两个数据

第一行第一个给出的是

去的时候从A地出发到B地的起飞时间

第一行第二个数据 是去的时候在B地降落的时间

第二行的第一个数据是

回程时到A地的降落时间

第二行第二个数据时

回程时在B地的起飞时间

时间推导

时间推导完毕接下来是读取

这里用到了scanf的特性

只有格式和scanf内的格式化字符一致

才能进行读入

scanf("%d:%d:%d (+%d)", &h[i], &m[i], &s[i], &f[i])

前三个必定被读入

只有当存在括号+%d时第四个数才会被读入 

读完之后处理数据算出结果即可

对于to_date函数 的计算 

真正秒数 等于 总秒数对60取模

总分钟数等于总秒数除以60;真正分钟数等于总分钟数对60取模;

总小时数等于 总分钟数/60

#include<bits/stdc++.h>
using namespace std;

int h[4], m[4], s[4], f[4],t[4];

int to_second(int h,int m,int s)
{
    return h * 3600 + m * 60 + s;
}

void to_date(int s)
{    
    int m = s / 60; s %= 60;
    int h = m / 60; m %= 60;
    printf("%02d:%02d:%02d\n", h, m, s);
}

int main()
{
    int n; cin >> n;
    while (n--)
    {
        memset(f, 0, sizeof(f));
        for (int i = 0; i < 4; i++)
        {
            scanf("%d:%d:%d (+%d)", &h[i], &m[i], &s[i], &f[i]);//前三个必定会读入,第四个仅当格式为(+t)时才会被读入,否则本次读入结束
            if (f[i] == 1)h[i] += 24;
            if (f[i] == 2)h[i] += 48;
            t[i] = to_second(h[i], m[i], s[i]);
        }
        to_date(t[1] - t[0] + t[3] - t[2] >> 1);
    }
}

相关推荐

  1. 笔记1】

    2024-03-15 12:38:03       38 阅读
  2. 笔记3】

    2024-03-15 12:38:03       35 阅读
  3. leetcode笔记

    2024-03-15 12:38:03       21 阅读
  4. Python | 笔记

    2024-03-15 12:38:03       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 12:38:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 12:38:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 12:38:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 12:38:03       18 阅读

热门阅读

  1. 《数据库》复试问答题总结

    2024-03-15 12:38:03       20 阅读
  2. 软考网络工程师 第五章 第六节 WLAN安全

    2024-03-15 12:38:03       21 阅读
  3. C# tcp通信连接正常判断

    2024-03-15 12:38:03       22 阅读
  4. ARM/Linux嵌入式面试专栏前言

    2024-03-15 12:38:03       19 阅读
  5. 数据库DBMS,DBS,DBA

    2024-03-15 12:38:03       19 阅读
  6. 2023 年 9 月青少年软编等考 C 语言一级真题解析

    2024-03-15 12:38:03       18 阅读