首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
N!表示 1*2*…*N。求 1024!的末尾有多少个0?
[单选题]
N!表示 1*2*…*N。求 1024!的末尾有多少个0?比如10!=3628800末尾有两个0。
113
253
1023
1024
添加笔记
求解答(0)
邀请回答
收藏(14)
分享
纠错
5个回答
添加回答
2
StrongYoung
1024/5=204; 204/5=40; 40/5=8; 8/5=1; 1/5=0; 204+40+8+1=253
发表于 2015-07-20 09:20:56
回复(0)
0
岚啊哪
253
发表于 2015-08-15 21:06:39
回复(0)
0
你正年轻
将1024!看做是一个很长的乘式。根据乘法的结合律,找出所有小于1024的数中相乘结果末尾为0的因子。可以想到末尾为0的数与其他数相乘、5的倍数与2的倍数相乘,都会得到末尾为0的数。进一步想末尾为0的数包含在5的倍数中。所以只要找出所有5的倍数与2的倍数相乘就能得到0。然而明显2的倍数是远远大于5的倍数的。所以只要找出长乘式中的所有5的个数就能解决问题。
再次,5的倍数乘2的倍数可以至少得到末尾为1个0的数。如15*2=30。但是5的n次方,包含n个5,可得到末尾为更多0的数。如25*4=5*5*4=100。125*8=5*5*5*8=1000。
25与4的倍数相乘会得到2个0,但25的倍数也是5的倍数,其中一半已经在5的倍数中了,只要计算25的倍数的个数即可
。
综上。1024!中5的个数应为:
是5的倍数的数有: 1024 / 5 = 204个
是25的倍数的数有:1024 / 25 = 40个
是125的倍数的数有:1024 / 125 = 8个
是625的倍数的数有:1024 / 625 = 1个
所以1024! 中总共有204+40+8+1=253个因子5。
也就是说1024! 末尾有253个0。
发表于 2015-05-21 19:19:57
回复(0)
0
幻世魔灵
void main()
{
int i,cntA,cntB,num,tnum;
while(1)
{
printf("请输入你需要用于阶乘的N:\n");
scanf("%d",&i);
cntA = 0;
cntB = 0;
for(num=1;num<=i;num++)
{
tnum = num;
while(tnum%2==0)
{
cntA++;
tnum = tnum/2;
}
tnum = num;
while(tnum%5==0)
{
cntB++;
tnum = tnum/5;
}
}
if(cntA > cntB)
{
cntA = cntB;
}
printf("共有0个数:%d\n",cntA);
}
}
输入1024
结果为253
复制
去Google翻译
翻译结果
发表于 2015-04-13 21:35:03
回复(0)
0
sharp
B 2 * 5 = 10 贡献一个0 将1024!写成质因数相乘 就是看 2 与 5 的个数(明显2的个数大于5)
发表于 2014-10-18 16:53:33
回复(1)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
谷歌
穷举
上传者:
A-Winter
难度:
5条回答
14收藏
14441浏览
热门推荐
相关试题
按照OSI模型的层次概念,下列几个...
谷歌
网络基础
评论
(5)
来自
Google2012笔试卷
给出一个函数来输出一个字符串的所有排列。
微软
链表
穷举
组合数学
评论
(4)
普通PC机器上四字节有符号整数能表...
谷歌
编程基础
评论
(3)
分页系统的逻辑地址结构是一维的,分...
操作系统
评论
(1)
关于分段系统与分页系统的区别,描述...
操作系统
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题