对一个正整数n,求出n!中末尾0的个数。

简介:

对一个正整数n,求出n!中末尾0的个数。

输入

输入有若干行。每一行上有一个整数T,是测试数据组数,接着有T行,每一行包含一个确定的正整数n(n≤1000000000)。

输出

对输入行中的每一个数据n,输出一行,其内容是n!中末尾0的个数。

输入样例                              输出样例

3                                     

3                                     0

100                                   24

1024                                  253      

 

下边的代码只是解法的核心部分。   

 

复制代码
#include <stdio.h>
void main()
{
__int64 n,i,t,two=0,five=0,sum;
scanf("%I64d",&n);
for (i=1;i<=n;i++)
{
t=i;
while (t%2==0 && t!=1)
{
two++;
t/=2;
}
t=i;
while (t%5==0 && t!=1)
{
five++;
t/=5;
}
}
sum = (two>five?five:two);
printf("%I64d\n",sum);
}
复制代码

 //今天看了《编程之美》,原来代码可以如此简单。。。还有一种更快的解法、也很巧妙

复制代码
#include <stdio.h>
void main()
{
    __int64 n,i,t,five=0;
    scanf("%I64d",&n);
    for (i=1;i<=n;i++)
    {
        t=i;
        while (t%5==0 && t!=1)
        {
            five++;
            t/=5;
        }
    }
    printf("%I64d\n",five);
}
复制代码

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/archive/2012/03/18/2405203.html,如需转载请自行联系原作者

相关文章
|
6月前
给定一个长度为n的数组,请将数组中元素按照奇偶性重新划分,所有奇数靠左边,所有偶数靠右边,然后分别对奇数、偶数部分进行排序
给定一个长度为n的数组,请将数组中元素按照奇偶性重新划分,所有奇数靠左边,所有偶数靠右边,然后分别对奇数、偶数部分进行排序
58 1
|
25天前
求0—7所能组成的奇数个数
【10月更文挑战第10天】求0—7所能组成的奇数个数。
17 2
|
25天前
(剑指Offer)04、二维数组中的查找11、旋转数组的最小数字50、第一个只出现一次的字符(2021.12.02)
(剑指Offer)04、二维数组中的查找11、旋转数组的最小数字50、第一个只出现一次的字符(2021.12.02)
27 1
|
2月前
|
C语言 Python
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
159 2
|
算法 C语言 C++
【前缀和】1588. 所有奇数长度子数组的和
【前缀和】1588. 所有奇数长度子数组的和
95 0
随即输入10个数,并求10个整数最大值
随即输入10个数,并求10个整数最大值
99 0
随即输入10个数,并求10个整数最大值
|
机器学习/深度学习 存储 算法
【简单算法】1.两数之和,给定整数数组和目标值,找出数组中2数之和等于目标值的元素
【简单算法】1.两数之和,给定整数数组和目标值,找出数组中2数之和等于目标值的元素
【简单算法】1.两数之和,给定整数数组和目标值,找出数组中2数之和等于目标值的元素
求出任意非负整数区间中1出现的次数
求出任意非负整数区间中1出现的次数
109 0
给定一个由正数,负数和0组成的整数数组,将所有为0的元素,挪到数组末尾。要求时间复杂度O(n)
给定一个由正数,负数和0组成的整数数组,将所有为0的元素,挪到数组末尾。要求时间复杂度O(n)
262 0
给定一个由正数,负数和0组成的整数数组,将所有为0的元素,挪到数组末尾。要求时间复杂度O(n)
|
算法
2.给定任意一个自然数,获取它重新排列后,下一个比它大的自然数,要求时间复杂度O(n)。例如: 给定1233,它的下一个是1323; 给定1323,它的下一个是1332
2.给定任意一个自然数,获取它重新排列后,下一个比它大的自然数,要求时间复杂度O(n)。例如: 给定1233,它的下一个是1323; 给定1323,它的下一个是1332
116 0