首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Baidu笔试题,

2012-02-23 
求助:Baidu笔试题,。。。。。对任意输入的正整数N,编写C程序求N!的尾部连续0的个数,并指出计算复杂度。如:18!=64

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

请牛人解答。。。



[解决办法]
原先的思路有点麻烦 这是比较简单的 LOG5(N)的算法

#include <stdio.h>
void main()
{
 int n,pow5,result=0;
scanf("%d",&n);
for(pow5=5;n>=pow5;pow5*=5)
{
result+=n / pow5;
}
printf("%d\n",result);
getchar();
getchar();
}
[解决办法]
如果输入的是long 型变量 做相应调整
#include <stdio.h>
void main()
{
long n,pow5,result=0;
printf("Input N:");
scanf("%ld",&n);
for(pow5=5;n>=pow5;pow5*=5)
{
result+=n / pow5;
}
printf("%ld \n",result);
getchar();
getchar();
}

热点排行