举个例子,比如10!
10!=1*2*3*4*5*6*7*8*9*10;
会产生两个零。
为什么呢?
数末尾的零,可以看成2*5,比如130=13*10=13*2*5;
而10!中,只有5,和10会各自产生一个5,而且因为偶数就会产生2,比如2 4 6 8 10
所以,求N!末尾的零就是求1-N会产生多少个5
很容易想到N/5,但是要注意25,125这些连续5相乘产生的数,所以正确的应该是:
#include <stdio.h>
int main() {
int n, ans = 0;
scanf("%d", &n);
while (n) {
ans += n/5;
n/=5;
}
printf("%d\n", ans);
return 0;
}
代码填空可以写成:
#include <stdio.h>
int main() {
int n, ans = 0;
scanf("%d", &n);
while (n) {
ans += n=n/5;
}
printf("%d\n", ans);
return 0;
}