p5709_Apples Prologue(深基2.习6)
Description
八尾勇喜欢吃苹果。她现在有 m ( m ⩽ 100 ) m(m\leqslant 100) m(m⩽100)个苹果,吃完一个苹果需要花费 t ( 0 ⩽ t ⩽ 100 ) t(0 \leqslant t \leqslant 100) t(0⩽t⩽100)分钟,吃完一个后立刻开始吃下一个。现在时间过去了 s ( s ⩽ 10000 ) s(s\leqslant 10000) s(s⩽10000)分钟,请问她还有几个完整的苹果?
Input
输入三个非负整数表示 m 、t 和 s。
Output
输出一个整数表示答案。
如果你出现了 RE,不如检查一下被零除?
Sample Input
50 10 200
Sample Output
30
这题看似简单,但是有挺多坑的,如果不注意的话就会WA和RE,答案可以分成三种情况。
第一种是m为0的情况,如果s/t比m大的话,即吃完m个苹果还有剩余时间,那么m就为0,因为苹果不可能是负数吧?但是这个就有一个违背常理的大坑,八尾勇吃完一个苹果的时间可以是0(
0
⩽
t
⩽
100
0 \leqslant t \leqslant 100
0⩽t⩽100),如果是0的话一下子就吃完了,就没有苹果了,题目要求的,那我们也没办法,所以先满足t=0或s/t
⩾
\geqslant
⩾ m那么就输出0;
第二种就是当s%t=0的情况了,因为题目问的是还剩几个完整的苹果,所以s%t=0是临界条件,就是吃完一个正准备吃下一个的时候,这个时候下一个苹果是完整的,所以结果是m-s/t;
第三种跟第二种差不多,就是过了临界条件,苹果已经不完整了,所以答案是m-s/t-1。
#include <cstdio>
using namespace std;
int main(){
int m,t,s;
scanf("%d %d %d",&m,&t,&s);
if(t==0||s/t>=m) {
printf("0");
return 0;
}
if(s==0) printf("%d",m);
else if(s%t==0) printf("%d",m-s/t);
else printf("%d",m-s/t-1);
return 0;
}