题解:P5707 【深基2.例12】上学迟到

· · 题解

题目理解

题目要求计算小A需要几点从家出发才能在上课前10分钟到达学校。已知:

2. 计算总所需时间
总时间 = 步行时间 + 10分钟(提前到达时间)

3. 计算最晚出发时间
从8:00(480分钟)倒推:

4. 处理时间格式

代码实现(C++)

#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;
}

欢迎大家前来讨论(๑•ᴗ•๑)♡

第一次写题解,求过