- 吐吐很快乐
死虫子跟烂苹果--题解
- @ 2025-11-2 17:20:03
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 条评论
目前还没有评论...