牛客网NC21994:分钟计算
牛客网NC21994:分钟计算
📝 题目描述
输入格式
- 输入两行,每行包含两个整数,分别表示小时和分钟
- 第一行表示起始时间,第二行表示结束时间
输出格式
- 输出一个整数,表示两个时间点之间的分钟数
示例
输入:
10 10
11 05
输出:
55
💡 解题思路
这道题目的核心在于如何计算两个时间点之间的时间差。思路非常直观:
- 将时间统一转换为分钟表示
- 计算两个时间点之间的分钟差
具体来说,对于时间 h:m
,我们可以将其转换为分钟数:h * 60 + m
。
然后用第二个时间点的分钟数减去第一个时间点的分钟数,即可得到结果。
📊 代码实现
#include<bits/stdc++.h>
using namespace std;
int main(){int a,b,c,d;cin>>a>>b;cin>>c>>d;cout<<(c*60+d)-(a*60+b)<<endl;//将时间统一转换为分钟表示,计算两个时间点之间的分钟差
}
📚 代码详解
让我们逐行分析这段简洁而高效的代码:
-
#include<bits/stdc++.h>
:包含C++标准库中的所有头文件,虽然这在实际工程中不推荐使用,但在算法竞赛中很常见,可以节省包含多个头文件的时间。 -
int a,b,c,d;
:声明四个整型变量:a
:第一个时间点的小时b
:第一个时间点的分钟c
:第二个时间点的小时d
:第二个时间点的分钟
-
cin>>a>>b;
:读入第一个时间点的小时和分钟。 -
cin>>c>>d;
:读入第二个时间点的小时和分钟。 -
cout<<(c*60+d)-(a*60+b)<<endl;
:c*60+d
:将第二个时间点转换为分钟表示a*60+b
:将第一个时间点转换为分钟表示- 两者相减得到时间差(分钟数)
- 输出结果并换行
🔍 时间复杂度分析
- 时间复杂度:O(1),只进行了简单的数学运算
- 空间复杂度:O(1),只使用了几个变量
💯 总结
这是一道简单的数学转换问题,核心思想是将时间统一转换为某一单位(本题中是分钟)后再进行计算。解决此类问题的关键在于找到合适的统一度量单位,简化计算过程。
这种时间转换的思路在实际编程中很常见,比如计算时间差、日期处理等场景都会用到类似技巧。对于初学者来说,这是一个很好的练习基础数学运算和单位转换的题目。