P5709 【深基 2.习 6】Apples Prologue / 苹果和虫子
这是一个非常经典的入门编程题目,主要考察分类讨论和边界情况的处理。
以下是按行拆解的解题思路:
- 定义三个整型变量 并读取输入的数据。
- 特判分母为零:检查 是否等于 0。题目提示了 RE(运行错误),如果吃苹果不需要时间,瞬间就吃光了,直接输出 0。
- 如果 不为 0,计算在这段时间 内被“破坏”的苹果数量。
- 先计算 ,得出完整吃掉的苹果个数。
- 判断是否正在吃下一个:如果 不等于 0(有余数),说明还有一个苹果被咬过了但没吃完,它不再完整,消耗数需要加 1。
- 计算剩余苹果数:用总数 减去总消耗数(吃完的 + 正在吃的)。
- 特判负数情况:检查计算结果是否小于 0。如果时间 很长,苹果早就吃光了,剩余数量不能是负数,必须修正为 0。
- 输出最终确定的剩余苹果数量。
核心代码逻辑参考 (C++)
if (t == 0) {
cout << 0 << endl;
} else {
int eaten = s / t; // 完整吃掉的
if (s % t != 0) {
eaten++; // 如果有余数,说明正在吃下一个,也算消耗掉了
}
int left = m - eaten;
if (left < 0) {
cout << 0 << endl; // 防止输出负数
} else {
cout << left << endl;
}
}