题目要求计算同一天内两个时刻之间相差的分钟数。输入的时间采用 24 小时制,且保证开始时刻早于结束时刻。我们只需将两个时刻统一转换为从零点开始的分钟数,然后做差即可。
设开始时间为 h1 时 m1 分,结束时间为 h2 时 m2 分。
从零点到开始时刻的总分钟数为:
total_start = h1 × 60 + m1
从零点到结束时刻的总分钟数为:
total_end = h2 × 60 + m2
两者之差即为所求:
answer = total_end - total_start
等价地,可以直接用公式:
answer = (h2 - h1) × 60 + (m2 - m1)
整个过程只涉及基本运算和输入输出,没有复杂的数据结构或逻辑判断。
程序只执行常数次操作,因此时间复杂度为 O(1),可以在瞬间完成计算,满足题目给定的时间限制。
以下是修正后的 C++ 代码(原参考代码中存在一些笔误,这里一并修正并附上注释):
cpp1#include <iostream> 2using namespace std; 3 4int main() { 5 int h1, m1, h2, m2; 6 cin >> h1 >> m1; // 输入开始时刻 7 cin >> h2 >> m2; // 输入结束时刻 8 cout << (h2 - h1) * 60 + (m2 - m1) << endl; 9 return 0; 10}
代码解释:
#include <iostream>:包含输入输出流库,用于 cin 和 cout。using namespace std;:使用标准命名空间,避免书写 std:: 前缀。using namespace std;,此处已修正。)int main():程序入口。cin >> h1 >> m1; 和 cin >> h2 >> m2;:分别读取四行输入。cout << (h2 - h1) * 60 + (m2 - m1) << endl;:按照小时差换算成分钟,再加上分钟差,输出结果并换行。return 0;:程序正常结束。这是一道基础的时间计算题,核心在于将小时统一转换为分钟后再求差。只要理解小时和分钟的换算关系,就能轻松解决。