#P5709. 【深基2.习6】Apples Prologue / 苹果和虫子

【深基2.习6】Apples Prologue / 苹果和虫子

【深基2.习6】Apples Prologue / 苹果和虫子

题目来源

洛谷 P5709

题目描述

小 B 喜欢吃苹果。她现在有 mm(1≤m≤1001 \le m \le 100)个苹果,吃完一个苹果需要花费 tt(0≤t≤1000 \le t \le 100)分钟,吃完一个后立刻开始吃下一个。现在时间过去了 ss(1≤s≤100001 \le s \le 10000)分钟,请问她还有几个完整的苹果?

输入格式

输入三个非负整数表示 m,t,sm, t, s。

输出格式

输出一个整数表示答案。

样例输入

50 10 200

样例输出

30

提示

一、除以 0 会直接崩溃

在 C++ 里,整数除以 0 不是得到 0,也不是无穷大,而是「未定义行为」:

int x = 5 / 0;    // 运行时错误,评测显示 RE

评测机会判你 RE(Runtime Error),而不是 WA。看到 RE 又找不到数组越界,先查有没有除零。

二、什么时候会除零

只要除数是一个「算出来的量」,就要怀疑它可能是 0:

  • 速度 s 可能为 0;
  • 份数 n 可能为 0;
  • 时间 t 可能为 0。

三、现在能做的三件事

  1. 先看题目保证:题面如果说「保证 s > 0」,那就不用管。
  2. 检查数据范围:范围包含 0 就要小心。
  3. 用等价的乘法代替除法:比如判断 a / b > c,在 b > 0 时可以改写成 a > c * b,避开除法。

真正要用「如果为 0 就特殊处理」,需要 if 分支——第 8 章会讲,这里先知道现象和成因。

四、自检

提交后如果是 RE,把每个除法都圈出来,问自己「这个除数有没有可能是 0」。

  • 模型和上一题一样:先算吃掉几个,再相减。
  • 先看数据范围里哪个参数可能为 0,再决定要不要单独处理。
  • t = 0 时:0 分钟吃一个,时间过去再久也早就吃完了,结果应该是什么?

自查:用样例 50 10 200 → 30 验证,再自己造一个 t=0 的输入试运行;如果程序崩溃,就是没处理除零。