小森每天的上班时间是a点到b点,小珀每天的上班时间是c点到d点。请问他们每天的工作时间中有多少小时是重叠的?输出两人工作时间中有多少小时是重叠的。c++
时间: 2024-10-17 22:05:09 浏览: 21
小森灵游戏图片资源拦截并输出到文件
为了计算小森和小珀工作时间的重叠部分,我们需要比较他们的开始时间和结束时间。假设a < b 和 c < d,并且我们想要找出最大公约数(GCD)来确定两段时间内的重叠部分。我们可以创建一个简单的C++函数来完成这个任务:
```cpp
#include <iostream>
#include <chrono> // 需要包含chrono库以处理时间差
// 函数用于计算两个时间范围的重叠小时数
int overlappingHours(int startA, int endA, int startB, int endB) {
std::chrono::hours overlap = std::chrono::hours(endA - a) + std::chrono::hours(c - startB);
if (overlap < std::chrono::hours(0)) { // 如果小珀的工作时间先于小森结束,则不考虑
return 0;
}
return std::min(std::chrono::hours(endA - startA), std::chrono::hours(endB - startB)); // 返回最小值作为重叠小时数
}
int main() {
int a = 8; // 小森的上班开始时间
int b = 17; // 小森的下班结束时间
int c = 9; // 小珀的上班开始时间
int d = 16; // 小珀的下班结束时间
int overlapping = overlappingHours(a, b, c, d);
std::cout << "小森和小珀的工作时间重叠了 " << overlapping << " 小时.\n";
return 0;
}
```
阅读全文