40分

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

@[ONicklgzh](/user/1132685) 1.第13行处的num没有经过num=s/t 的运算,因为if和else只能进一个,进了else就没有经过if,num也就没有经过s/t的运算,需要在13行前面补上运算。 2.第15行在判断remain小于等于0并输出0后,并没有直接return 0,这导致当remain$<=0$时不仅会输出0,还会执行18行的输出此时为负的remain。
by youzhanyue @ 2023-11-14 19:27:14


@[ONicklgzh](/user/1132685) 3.你第3行用的变量是`unsigned int`,这是$int$的无符号版本,这就导致remain永远是大于等于0的,从而使本来应该小于0的remain大于了0,而留到了最后倒数第三行输出真实的负的remain(因为printf你用的是%d,这是输出int的,这使本身无符号的remain又重新戴上了符号) 4.对于第9行的if内,remain也有可能会小于0,因此也要特判。 综上,AC代码如下: ```cpp #include <stdio.h> using namespace std; int t, s, m, num, remain; int main() { scanf("%d%d%d", &m, &t, &s); if (t == 0) { printf("0"); return 0; } if (s % t == 0) { num = s / t; remain = m - num; if (remain <= 0) { printf("0"); return 0; } } else { num=s/t; remain = m - num - 1; if (remain <= 0) { printf("0"); return 0; } } printf("%d", remain); return 0; } ```
by youzhanyue @ 2023-11-14 19:38:08


@[youzhanyue](/user/502121) 十分感谢
by ONicklgzh @ 2023-11-14 20:16:14


|