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;
}
正文
百度笔试题2008-02-26 18:10:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/chenhao/32967.html
阅读(3554) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论