using namespace std;    // 使用标准命名空间

int m, t, s;  // 定义三个变量:m-苹果总数,t-吃一个苹果需要的时间,s-已经吃的时间

int main()
{
    // 输入三个数字:苹果数量、吃一个苹果的时间、已经吃的时间
    cin >> m >> t >> s;
    
    // 特殊情况:如果吃一个苹果需要0分钟,那么瞬间就能吃完所有苹果
    if(t == 0)
    {
        cout << 0 << endl;  // 输出0,表示没有完整的苹果了
        return 0;           // 程序结束
    }
    
    // 正常情况:
    if(s % t == 0)  // 如果吃的时间正好是吃苹果时间的整数倍
        // 计算剩下的苹果数量,但不能小于0(用max函数保证)
        cout << max(m - s/t, 0) << endl;
    else            // 如果吃的时间不是整数倍
        // 因为没吃完的苹果不算,所以要多减1个,但不能小于0
        cout << max(m - s/t - 1, 0) << endl;
    
    return 0;  // 程序正常结束
}

想象一下,你有 m 个苹果,每 t 分钟能吃完一个苹果,现在已经吃了 s 分钟。

关键思路:

每 t 分钟能吃完 1 个苹果

所以 s 分钟内能吃完的苹果数量是 s ÷ t

剩下的苹果数量就是 总数 - 吃完的数量

特殊情况:

如果 t = 0(瞬间就能吃完一个苹果),那么所有苹果都吃完了,剩下 0 个

为什么有两种情况:

如果 s 正好是 t 的整数倍(比如 t=5,s=10),那么 10÷5=2,正好吃完2个苹果

如果 s 不是 t 的整数倍(比如 t=5,s=12),那么 12÷5=2余2,虽然吃了12分钟,但只完整吃完了2个苹果,第3个苹果还没吃完

max函数的作用: 保证剩下的苹果数量不会变成负数,如果计算结果是负数,就显示0。

举个例子:

如果有3个苹果,每5分钟吃一个,吃了8分钟

8÷5=1余3,所以只完整吃完了1个苹果

剩下3-1-1=1个完整的苹果(多减1是因为第2个苹果没吃完

0 条评论

目前还没有评论...