正文

百度笔试题2008-02-26 18:10:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/chenhao/32967.html

分享到:

1.对任意输入的正整数N,编写C程序求N!的尾部连续0的个数,并指出计算复杂度。如:18!=6402373705728000,尾部连续0的个数是3.(不用考虑数值超出计算机整数界限的问题)

方法1:先求出N!的积MUL,再通过%和/计算尾部连续0的个数

方法2:尾部连续0的个数就是乘积中所含10的因子数,也就是乘积中所含5的因子数.所以我们可以从5开始一直到N,统计其中5的因子数.

int countFactorialZero(int n)
{
    
int count=0;
    
for(int i=5;i<n;i+=5)
    {
        
int j=i;//注意不要直接用i
        while(j%5==0)
        {
            j
/=5;
            count
++;            
        }
    }
    
return count;
}

阅读(3554) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册