给定数X,求X!的末尾连续零的个数。比如 18!= 6402373705728000 末尾有三个零。
提示:千万别掉进了一种思维定势,一定要求出阶乘,然后再判断末尾有几个零;我们可以换一个思维方式:什么情况下两数的乘积为得到末尾为零?
举例:2 * 5 = 10 (结果的末尾增加一个零)
4 * 25 = 100 (结果的末尾增加两个零)
8 * 125 = 1000(结果的末尾增加三个零)
......
是否可以得到一种启示呢?
#include<stdio.h>
#include<math.>
int main(void)
{
int X;
printf("Please input an integrity:");
scanf("%d",&X);
int count_zero = 0;
int a = X/5;
while(a)
{
count_zero += a;
a = a/5;
}
printf("%d\n",count_zero);
return 0;
}