由于10可以分解为质因数2 * 5,所以可以将原阶乘分解求出2和5因子的数量,则末尾0的个数就是2和5中数量较少的那个的数量。
附ac代码:
#include <stdio.h>
int main(){
int t, n;
scanf("%d", &t);
while(t-- && scanf("%d", &n)){
int a = 0, b = 0; //分别存储质因子‘2’和、‘5’的数量
int x = n; //副本
while(x)
a += (x /= 2);
while(n)
b += (n /= 5);
printf("%d\n", a < b ? a : b);
}
return 0;
}