专栏文章
题解:P5707 【深基2.例12】上学迟到
P5707题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mipbaiwo
- 此快照首次捕获于
- 2025/12/03 09:11 3 个月前
- 此快照最后确认于
- 2025/12/03 09:11 3 个月前
题目理解
题目要求计算小A需要几点从家出发才能在上课前10分钟到达学校。已知:
- 家到学校的距离是 米
- 小A的步行速度是 米/分钟
- 学校上课时间是8:00
- 需要提前10分钟到达
步骤
1. 计算步行时间
首先计算步行所需时间,需要注意两点:
首先计算步行所需时间,需要注意两点:
- 时间必须向上取整(因为即使多1秒也需要多走1分钟)
- 公式:步行时间 = 或
2. 计算总所需时间
总时间 = 步行时间 10分钟(提前到达时间)
总时间 = 步行时间 10分钟(提前到达时间)
3. 计算最晚出发时间
从8:00(480分钟)倒推:
从8:00(480分钟)倒推:
- 最晚出发时间 = 480 总时间
- 如果结果为负,说明需要前一天出发,加上24小时(1440分钟)
4. 处理时间格式
- 将分钟数转换为小时和分钟
- 确保输出格式为HH:MM,不足两位补零
代码实现(C++)
CPP#include <bits/stdc++.h> // 万能头文件
using namespace std;
int s, v, walktime, gotime, gohour, gominute;
// 定义变量:
// s: 距离学校的路程(米)
// v: 步行速度(米/分钟)
// walktime: 步行所需时间(分钟)
// gotime: 需要出发的时间(分钟制,从午夜开始计算)
// gohour: 出发时间的小时部分
// gominute: 出发时间的分钟部分
int main(){
cin >> s >> v;
// 输入距离和速度
// 计算步行所需时间(向上取整)
walktime = s/v; // 整数除法
if(s%v!=0) // 如果有余数说明需要多花1分钟
walktime++;
// 计算最晚出发时间(分钟制)
// 480 = 8:00的分钟表示(8*60)
// 2880 = 48小时的分钟表示(防止负数)
// 10分钟缓冲时间
// %1440确保结果在0-1439范围内(24小时制)
gotime = (480 + 2880 - 10 - walktime)%1440;
// 将分钟转换为小时和分钟
gohour = gotime/60; // 计算小时部分
if(gohour<10) // 补零输出
cout << 0;
cout << gohour << ':';
gominute = gotime%60; // 计算分钟部分
if(gominute<10) // 补零输出
cout << 0;
cout << gominute << endl;
return 0;
}
欢迎大家前来讨论(๑•ᴗ•๑)♡
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...