@[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