以前在CSDN上看到过 转贴如下:
求n!末尾0的个数
思考: 该题实际上是求(2 5)因子对的个数。对于任意一个阶乘,5因子的个数总是小于2因子的个数,仅需考虑n!中5因子的个数
方法:
(1) 将该数用 5 除, 得到的商取整数。
(2) 然后再用所得商当被除数除以 5,得到的商取整数。
(3) 持续做到商等于 0 为止。
(4) 过程中的商加总即为阶乘的尾数 0 的个数。
例: 1234! 的尾数 0 的个数计算如下: 代码:
1234/5
= 246
246/5
= 49
49/5
= 9
9/5
= 1
1/5
= 0
------ ---------- 305
原理:
行(1)得到的是1~~~n中因子含5的数的个数
行(2)得到的是1~~~n中因子含25的数的个数
.
.
行(n)得到的是1~~~n中因子含5^n的数的个数
将这些数进行累计就得到了5因子的个数,也就是末尾0的个数。
Attachment :my code
#include <stdio.h>
int main()
{
int i, n;
scanf("%d", &n);
for(i=0; i<n; i++)
{
int temp;
int cnt = 0;
scanf("%d", &temp);
while(temp != 0)
cnt += (temp = temp/5);
printf("%d\n", cnt);
}
}
Trackback: http://tb.blog.
(这个地址我现在打不开了)