小鱼的游泳时间

小鱼的游泳时间

GESP一级综合练习,主要涉及时间计算,难度★☆☆☆☆。

luogu-P1425

题目要求

题目描述

伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。

这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按 2424 小时制计算),它发现自己从 aabb 分一直游泳到当天的 ccdd 分,请你帮小鱼计算一下,它这天一共游了多少时间呢?

小鱼游的好辛苦呀,你可不要算错了哦。

输入格式

一行内输入四个整数,以空格隔开,分别表示题目中的 a,b,c,da, b, c, d

输出格式

一行内输出两个整数 eeff,用空格间隔,依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数 ff 应该小于 6060

样例输入 #1

12 50 19 10

样例输出 #1

6 20

提示

对于全部测试数据,0a,c240\le a,c \le 240b,d600\le b,d \le 60,且结束时间一定晚于开始时间。


题目分析

在本题中,我们需要计算小鱼游泳的总时间。首先,我们从输入中读取开始时间(小时和分钟)以及结束时间(小时和分钟)。接着,我们需要判断结束时间的分钟是否小于开始时间的分钟。如果是这种情况,意味着结束时间的小时数需要减去1,并且结束分钟需要加上60,以便进行正确的计算。最后,我们将计算出的小时和分钟输出。

{% include custom/custom-post-content-inner.html %}

示例代码

#include <cstdio>

int main() {
    int a, b, c, d; // 定义四个整数变量,分别表示开始时间的小时和分钟,以及结束时间的小时和分钟
    scanf("%d%d%d%d", &a, &b, &c, &d); // 从标准输入读取四个整数
    // 判断结束分钟是否小于开始分钟
    if (d < b) {
        // 如果结束分钟小于开始分钟,小时数需要减去1,分钟数需要加上60
        printf("%d %d", c - 1 - a, d + 60 - b); // 输出总小时和总分钟
    } else {
        // 如果结束分钟大于或等于开始分钟,直接计算小时和分钟
        printf("%d %d", c - a, d - b); // 输出总小时和总分钟
    }
    return 0; // 程序结束
}

另外一种解题思路是,根据分钟数来计算。首先,我们可以将开始时间和结束时间都转换为总分钟数。然后,通过计算结束时间的总分钟数减去开始时间的总分钟数,得到经过的总分钟数。最后,将总分钟数转换为小时和分钟进行输出。

#include <cstdio>
using namespace std;

int main() {
    int a, b, c, d; // 定义四个整数变量,分别表示开始时间的小时(a)和分钟(b),以及结束时间的小时(c)和分钟(d)
    
    // 从标准输入读取四个整数,表示开始和结束的时间
    scanf("%d%d%d%d", &a, &b, &c, &d);
    
    // 将开始时间转换为总分钟数
    int start_m = a * 60 + b; 
    // 将结束时间转换为总分钟数
    int end_m = c * 60 + d; 
    
    // 计算总共经过的分钟数
    int cost_m = end_m - start_m; 
    // 计算经过的小时数
    int cost_time_h = cost_m / 60; 
    // 计算经过的分钟数
    int cost_time_m = cost_m % 60; 
    
    // 输出经过的小时和分钟
    printf("%d %d", cost_time_h, cost_time_m); 
    return 0; // 程序结束
}

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on