脑筋急转弯
100的阶乘的结果有多少个0? 问题点数:20、回复次数:146Top
1 楼mLee79()回复于 2006-11-27 12:32:48 得分 0
100/5 + 100/25Top
2 楼javasky0(The future is ours)回复于 2006-11-27 12:36:18 得分 0
n/10+n/100+n/1000+...Top
3 楼javasky0(The future is ours)回复于 2006-11-27 12:37:42 得分 0
啊我被转进去了楼上的是正解Top
4 楼crazy_lazy_pig(疯狂懒猪)回复于 2006-11-27 13:14:12 得分 0
30个, 仔细数过了.
不信大家一起数:
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000Top
5 楼mLee79()回复于 2006-11-27 13:36:23 得分 0
哦, 错了, 被 LZ 骗了 .....
Top
6 楼qiudw(一万年太久,只争朝夕!)回复于 2006-11-27 13:54:48 得分 0
为什么是100/5 + 100/25?Top
7 楼AFIC(A Fool In China)回复于 2006-11-27 14:04:15 得分 0
没有算法,只能一个一个数……
末尾0倒是可以算出来Top
8 楼northwolves(狼行天下)回复于 2006-11-27 14:04:44 得分 0
[n/5^1]+[n/5^2]+[n/5^3]+...Top
9 楼chllcy(搬张小板凳,听星星们的高见)回复于 2006-11-27 23:08:44 得分 0
楼上的解释一下啊!~~~Top
10 楼luolovegui(骆归)回复于 2006-11-28 11:18:13 得分 0
刚写了一个. 24个.
// test11.cpp : Defines the entry point for the console application.
//
// Author: luogui
// QQ:33761697
#include "stdafx.h"
int main(int argc, char* argv[])
{
const int nValue = 100;
int nSum = 0;
for(int i = 1; i<=nValue; i++)
{
int n = i;
while (n % 5 == 0)
{
nSum++;
n /= 5;
}
}
printf("Hello World!\n%d\n",nSum);
return 0;
}
Top
11 楼hai1039(天下)回复于 2006-11-28 11:22:40 得分 0
21个,
1-100数里含2个0的数有1个,
含1个0的数有9个,
含5的有10个
1*2+9*1+10*1=21
Top
12 楼FFSB()...()回复于 2006-11-28 11:29:09 得分 0
100的阶乘的结果不为零Top
13 楼brucesea(可口可乐)回复于 2006-11-28 11:38:32 得分 0
解释一下,0的个数就是:MIN(能整除2的个数,能整除5的个数),因为2*5=10。
显然能整除5的个数少些,看能整除5的个数就行了。
以5为步长,个数为n/5
以25为步长,个数为n/25 (例如25,25能整除5两次,所以要多加一次)
。。。
以5^t为步长,个数为n/5^t
结果为:n/5+n/25+...+0
n=100时,为100/5+100/25Top
14 楼Armstrong311(尼摩船长)回复于 2006-11-28 11:49:11 得分 0
找到所有能被5除尽的数 结果救出来了 比如25这样特殊的数要注意 呵呵 代表2个0啦 25/5/5
Top
15 楼XXKKFF(齐次边界条件有界弦自由振动方程混合问题的分离变量法-_-!!!)回复于 2006-11-28 12:25:27 得分 0
哦~~~~~~`Top
16 楼feifniao()回复于 2006-11-28 12:46:10 得分 0
我觉得是23
笨法数的.
末尾为零的,加一起,一共11个零
末尾为5的一共10 个.
再加上25和75.包含两个5的,再加2个
==23个.不知道少算了哪个Top
17 楼yqydaful(无边落木)回复于 2006-11-28 12:51:01 得分 0
没说末尾有多少0啊,支持crazy_lazy_pig(疯狂懒猪)Top
18 楼raozhiven(朗屹)回复于 2006-11-28 13:07:43 得分 0
即然是脑筋急转弯,那么
问:10里有多少个5?
答:10 / 5 = 2。
问:10的阶乘的结果有多少个0?
答:任何数除以0都无意思,无解。Top
19 楼tdktdktdk()回复于 2006-11-28 13:08:08 得分 0
末尾的0有23个。中间夹着几个0,一时找不着办法。莫非有好方法?Top
20 楼vingo888(江南锦)回复于 2006-11-28 13:11:27 得分 0
define f(x) {
if(x <= 1) return 1;
return (f(x -1 ) * x);
}
f(100)
Top
21 楼gxqcn(★) HugeCalc ← http://hugecalc.ik8.com/ (☆)回复于 2006-11-28 13:35:15 得分 0
“100!”如果用十进制表达,将出现30个“0”;如果用二进制表达,将出现318个“0”;
但如果用“100!+1”(或更高)进制表达,则不含“0”!Top
22 楼chen77716(tony)回复于 2006-11-28 13:35:29 得分 0
100!=以下各行相乘
1 * 2 * 3*...... 9*10
11 * 12 * 13*......19*20
21 * 22 * 23*......29*30
.
.
.
91 * 92 * 93*......99*100
显然,此时0的个数=11个,以上规律很明显,个位数都相同
考虑1 * 2 * 3*...... 9,的个位数得知,个位数为8,并且在多出一个0(因为4,5相乘)
此时0的个数为:11+10=21个
则上述乘式个位数变为:(把尾数的0去掉)
8* 1 = 8
8* 2 = 6
.
.
.
8* 9 = 2
8* 1 = 8
此时尾数均为偶数,相乘均再不能产生0
因此0的个数为21Top
23 楼lin_style(﹏.贾诩(某人语:矮子也高潮))回复于 2006-11-28 13:39:07 得分 0
小学竞赛题
看5 和 2Top
24 楼Jupin(T357)回复于 2006-11-28 13:40:43 得分 0
华为的电话面试问过这个问题
>>> r = 1
>>> for i in range(1,101):
... r *= i
...
>>> print r
933262154439441526816992388562667004907159
682643816214685929638952175999932299156089
414639761565182862536979208272237582511852
10916864000000000000000000000000
>>>Top
25 楼dlyme(大老爷们儿)回复于 2006-11-28 13:41:46 得分 0
如果只算末尾有多少个0,那是24个,[n/5^1]+[n/5^2]+[n/5^3]+......正解。
可是如果连中间出现的0也算上呢?一时想不到好的办法...Top
26 楼zhaoqisen(GRAPP)回复于 2006-11-28 13:42:58 得分 0
2个Top
27 楼chen77716(tony)回复于 2006-11-28 13:48:54 得分 0
Sorry,因为24,跟25相乘=600,会多产生一个0
总数是:21+1=22个Top
28 楼chen77716(tony)回复于 2006-11-28 13:49:51 得分 0
100!=以下各行相乘
1 * 2 * 3*...... 9*10
11 * 12 * 13*......19*20
21 * 22 * 23*......29*30
.
.
.
91 * 92 * 93*......99*100
显然,此时0的个数=11个,以上规律很明显,个位数都相同
考虑1 * 2 * 3*...... 9,的个位数得知,个位数为8,并且在多出一个0(因为4,5相乘)
此时0的个数为:11+10=21个
则上述乘式个位数变为:(把尾数的0去掉)
8* 1 = 8
8* 2 = 6
.
.
.
8* 9 = 2
8* 1 = 8
此时尾数均为偶数,相乘均再不能产生0
因此0的个数为21
因为24,跟25相乘=600,会多产生一个0
总数是:21+1=22个
Top
29 楼xuleicsu()回复于 2006-11-28 13:54:10 得分 0
还在讨论这个问题啊。
我的算法如下(顺便建议大家不要动不动就把代码贴上来)
首先 求出最大的m,m满足2的m次方整除100!
然后 求出最大的n,n满足5的n次方整除100!
min(m,n)即为最后零的个数
大家注意。素数中只有2×5才能产生0Top
30 楼dlyme(大老爷们儿)回复于 2006-11-28 13:55:29 得分 0
各位,楼上已经有人把阶乘计算结果贴出来了,自己数一下也知道对不对,怎么这么多人还说是21、22呢?Top
31 楼dlyme(大老爷们儿)回复于 2006-11-28 13:59:29 得分 0
gxqcn(★) HugeCalc ← http://maths.diy.myrice.com/ (☆)
“100!”如果用十进制表达,将出现30个“0”;如果用二进制表达,将出现318个“0”;
但如果用“100!+1”(或更高)进制表达,则不含“0”!
=============================================================================
对得一塌糊涂!能告诉我是怎么算的吗???Top
32 楼zhuozhuo_jiao(卓卓)回复于 2006-11-28 14:06:37 得分 0
不算中间出现的只看末尾就24个了
10-100这样的数11个
2*5这样的10个
但25,50,75和4,8,12这样数乘会多一个0
所以末尾应该24个
中间出现的0就不好算了Top
33 楼buyaowen(失业中,请勿打扰)回复于 2006-11-28 14:09:58 得分 0
1-100末尾的0一共11个
5和5的倍数有,不算末尾是0的,有10个
特殊的有25,50,75,再加3个
一共24Top
34 楼huguang(胡广)回复于 2006-11-28 14:10:03 得分 0
包括几个5这种做法显然有问题!Top
35 楼gxqcn(★) HugeCalc ← http://hugecalc.ik8.com/ (☆)回复于 2006-11-28 14:11:35 得分 0
to dlyme(大老爷们儿):
我用的是 HugeCalc,计算出结果再转换成二进制;将结果拷贝到 UEStudio,选“搜索”统计“0”即可。Top
36 楼ruantc(碧血剑传人)回复于 2006-11-28 14:16:03 得分 0
综上我有核实了下100!末尾是有24个0,全部是有30个0 。
但是主要,这个题目是脑筋急转弯题而不是数学题。好比1+1=?这类那样。
同意:raozhiven(朗屹) 的观点
-------------
问:10里有多少个5?
答:10 / 5 = 2。即10里有2个5。
问:10的阶乘的结果有多少个0?
答:任何数除以0都无意思,无解。
Top
37 楼xinhangwzq()回复于 2006-11-28 14:29:11 得分 0
24个0
4*5*9*10*14*15*19*20*24*25*29*30*....*48*50*...*72*75*...99*100
只要将25,50,75不算错就行了
或者 将所有的5的倍数全提出来 全部拆分。
5 10 15 20 30 35 40 45 55 60 65 70 80 85 90 95 共可以拆成16个5
25 50 75 100 可拆成8个5
所以和到24个5.
很多人出错在50×49 如果换一下顺序 48×50就有两个0了Top
38 楼lexchou(龍子龍孫)(本人已死)(有事烧纸)回复于 2006-11-28 14:32:12 得分 0
高一的时候我的算法老师也问我我同样的问题,我算的是 21 #- -Top
39 楼chllcy(搬张小板凳,听星星们的高见)回复于 2006-11-28 14:34:40 得分 0
那些不懂的千万不要误倒我们这些新人啊!~~Top
40 楼qizi82()回复于 2006-11-28 14:46:32 得分 0
末尾的0好确定 中间的0怎么算啊?
15×14×13×12×11 的结果有几个0?
中间的出现的0如何确定?Top
41 楼softfire007(为天下美女幸福而生!)回复于 2006-11-28 14:59:44 得分 0
程序Top
42 楼yunxiang(无名)回复于 2006-11-28 15:12:37 得分 0
想要出现0 就必须要有5
所以把
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
这些数字抽取出来.其他不会出现0
这些数字理由有多少个5就有多少个0
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
1+1+1+1+2+1+1+1+1+ 2 +1+1+1+1+1+ 1+1 +1+1+2= 22
Top
43 楼yunxiang(无名)回复于 2006-11-28 15:15:38 得分 0
不好意思.数错了.
25 50 75 100 都有两个5
应该是20+4=24Top
44 楼LIDEHUA1975(李逍遥)回复于 2006-11-28 15:19:54 得分 0
一群笨蛋!
答案是24。
10=2X5,因此每个5遇到2都会产生一个0,100里面能被5整除的有20个,例如5、10、15、20、25。。。。,这20个数里面都至少有1个5,因此能产生20个0。
但还有特殊的数字,例如25,50,75,100。他们都是25的倍数,含有2个5,因此我们还要在20的基础上加上这种数字的个数,100/25=4。
所以,最终答案就是24。
通常解的形式就如上面朋友所说,[n/5]+[n/5*5]+[n/5*5*5]+.....Top
45 楼mango279(木目)回复于 2006-11-28 15:34:27 得分 0
既然是脑筋急转弯,那么
100!的结果有100!/2个2,有100!/5个5, 有100!/3个3
当然有100!/0个0,因此100!的结果有无穷多个0Top
46 楼yunxiang(无名)回复于 2006-11-28 15:42:56 得分 0
末尾有24个0
中间的有9个0
因为 有51 52 53 54 55 56 57 58 59
这些数字在和2相乘后就会使中间有0
s所以一共 33个0Top
47 楼junqiang(蓝色海洋)回复于 2006-11-28 15:43:35 得分 0
说明了是脑筋急转弯,当然不能用常规的方法!
我的答案是2个0。“100的阶乘”这个文本看一眼就知道是两个0Top
48 楼junqiang(蓝色海洋)回复于 2006-11-28 15:44:29 得分 0
“太平洋”中间是什么?当然是“平”Top
49 楼gch_h(小小乌龟)回复于 2006-11-28 15:49:24 得分 0
100有2个0,每个逢整十有一个0(包括10、20、30、40、50、60、70、80、90),共9个0,个位数一对2和5(偶数和5都可以,但是5只有10个)会产生一个0(每个整十刚好包含一对个位的2和5,如2和5、12和15、22和25……),共10个0,在100以内的数字去掉上述列举的数字之后在也找不到相乘结果为整十的数字了,所以100的阶乘的结果总共有21个0。如果那位仁兄还可以找到其他的0请告诉我。Top
50 楼gch_h(小小乌龟)回复于 2006-11-28 15:53:08 得分 0
应该说结果十以21个零结尾,至于中间有几个0就只有去数数看了Top
51 楼gch_h(小小乌龟)回复于 2006-11-28 16:00:29 得分 0
仔细想想还是24个,其中25、50、75都可以和其他偶数产生2个0Top
52 楼blackant2(乔峰)回复于 2006-11-28 16:01:44 得分 0
如果用ruby来算就简单了,傻瓜都会
result=1
2.upto(100){|i| result*=i}
puts result
puts result.to_s.gsub(/[1-9]/,'').length
==运行结果
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
30Top
53 楼hujun614(向2个或2个以上的板块都至少是二星用户的朋友学习)回复于 2006-11-28 16:01:52 得分 0
100有2个0,
逢十有9个数共9个0,其中50应多加一个0,
逢25,75也有两个零,
另外8个个位为5能生成8个0
所以共有24零
其实这只是尾部有多少个零,要算是前面有多少个,受后面进位影响太多,就不好计算了Top
54 楼parkour()回复于 2006-11-28 16:08:28 得分 0
楼上已有两位兄台,以算出100!的积后再数出来的0是有30个(本人也数了),请不要再以那些错误的算法来算22个或,24个呀,当你算出是30个0时再说你你算法和想法,否则也只是误导我们.
不要老是想到5呀25呀*某个数会产生0,却没有到也会减少0.
还有问题是最后*积的0而不是分段算出来的0的和,因为每一个分段还会作一次*运算,所以除了尾数的0不会发生个数变化,中的所有0都有可能会发生变化.Top
55 楼hdhmail2000(禅剑飞雪)回复于 2006-11-28 16:12:13 得分 0
9332621544394415268169923885626670049071596826438162146859296389521759999
3229915608941463976156518286253697920827223758251185210916864000000000000000000000000
数下就知道了Top
56 楼CARLTOON(乖乖老虎不咬人)回复于 2006-11-28 16:15:36 得分 0
其实很简单,10!=3628800,已经有2个末尾0了,到50!就应该是11个(50因子可以增加一个),到100!应该再增加11个(100增加2个0),因此,总数是22Top
57 楼CARLTOON(乖乖老虎不咬人)回复于 2006-11-28 16:17:04 得分 0
错了,25\75又可以增加2个,总数是24个Top
58 楼hdhmail2000(禅剑飞雪)回复于 2006-11-28 16:18:24 得分 0
脑精急转弯自然是算尾数吧
搂主这题出的太有争议了Top
59 楼mango279(木目)回复于 2006-11-28 16:30:11 得分 0
回复人:CARLTOON(乖乖老虎不咬人) ( 一级(初级)) 信誉:100 2006-11-28 16:15:36 得分:0
?
其实很简单,10!=3628800,已经有2个末尾0了,到50!就应该是11个(50因子可以增加一个),到100!应该再增加11个(100增加2个0),因此,总数是22
==============================================
这位老兄,上面很多回复都可以作为参考的,麻烦你多看看Top
60 楼yanghuajia(我要抢分)回复于 2006-11-28 16:30:50 得分 0
当初回答这个问题是小学的时候,
该提应该给小学生讨论的。Top
61 楼MouseChen()回复于 2006-11-28 16:45:26 得分 0
这个有意思吗?Top
62 楼stillhurt(redkiller)回复于 2006-11-28 16:52:31 得分 0
9332621544394415268169923885626670049071596826438162146859296389521759999
3229915608941463976156518286253697920827223758251185210916864000000000000000000000000
这个方法实在太……
从5到100,数X对5取模,只要等于0的就让count0加1,然后除以5后继续取模加一,直到取模不等于0。然后取X+5继续对5取模……
写个小程序就出来了~Top
63 楼piaopiao11()回复于 2006-11-28 17:02:32 得分 0
30Top
64 楼yyxxh(yyxxh)回复于 2006-11-28 17:36:30 得分 0
很多人没学初等数论!Top
65 楼jianshi051(看到我就给我一点分吧>_<~)回复于 2006-11-28 17:38:48 得分 0
24是正解!~ 我有计算过~Top
66 楼ade3000(不可能被淹死的鱼)回复于 2006-11-28 18:12:01 得分 0
"100!"后一个0也没有,它的后面是"!"Top
67 楼tatbaby(岛主)回复于 2006-11-28 19:10:21 得分 0
很多人都在讨论是21还是22,汗
前面人家都把100!结果给出来,还把推倒过程[n/5^1]+[n/5^2]+[n/5^3]+...给出来。
大家都不看回帖在瞎yy。。。Top
68 楼jianshi051(看到我就给我一点分吧>_<~)回复于 2006-11-28 19:17:50 得分 0
无论如何学习了,长见识了!~ 谢谢~Top
69 楼oop_cpp()回复于 2006-11-28 19:22:21 得分 0
有人有算100!的算法吗??最终能够将100!的结果在屏幕上显示出来……Top
70 楼spirit_sheng(老盛)回复于 2006-11-28 19:37:22 得分 0
只有两个0, 注意, 这是 脑筋急转弯Top
71 楼spirit_sheng(老盛)回复于 2006-11-28 19:39:31 得分 0
100的阶乘的结果有多少个0?
应当这么看 "100的阶乘的结果"有多少个0?
你们说"100的阶乘的结果"这个字符串里有多少个0啊Top
72 楼GavinLv(Gavin.Lv.)回复于 2006-11-28 19:47:34 得分 0
我觉得还是让电脑去算省心 :)Top
73 楼adm_qxx((极品菠萝))回复于 2006-11-28 20:00:47 得分 0
算法描述
分解质因数,即:
1*2*3*...*1000 = (2*5)*(2*5)*...*(2*5)
*(没有匹配的2或5) //其实地球人都知道2肯定比5多
//这样其实只需要确定因子5的个数即可
*(除2和5以外的其他质因数);
其因子中有多少个(2*5)即末尾有多少个0
因此问题变成求每个数中2和5因子的个数,再求和
最后min(因子2个数的总和,因子5个数的总和)即是所求。
参考:http://blog.sina.com.cn/u/3f943404010001blTop
74 楼PeopleRain()回复于 2006-11-28 20:45:49 得分 0
确实有傻的,为什么回帖的人都不看其他人的回帖呢?Top
75 楼z86x08y17()回复于 2006-11-28 20:54:00 得分 0
反正最少有一个是0,我是我了来完成作业的。Top
76 楼ly_liuyang(Liu Yang LYSoft http://lysoft.7u7.net)回复于 2006-11-28 20:56:09 得分 0
懒得想~~Top
77 楼jia6867489()回复于 2006-11-28 21:09:41 得分 0
我也是来做作业的,晕Top
78 楼gswjsl()回复于 2006-11-28 21:10:55 得分 0
我也是来做作业的,哈哈,一样 。Top
79 楼yjvria()回复于 2006-11-28 21:11:13 得分 0
这个问题是不是有点。。。。。。?Top
80 楼jwy3110()回复于 2006-11-28 21:21:25 得分 0
什么垃圾机子,难用死!Top
81 楼jwy3110()回复于 2006-11-28 21:22:12 得分 0
低你 !Top
82 楼jxfengzi(子丰)回复于 2006-11-28 21:27:45 得分 0
6年前就有人在CSDN上问过这个问题,……Top
83 楼wzz7942720()回复于 2006-11-28 21:34:32 得分 0
6年前就有人在CSDN上问过这个问题,……
来完成作业的 顺便顶一下Top
84 楼cyyno1(GunRose)回复于 2006-11-28 22:20:15 得分 0
有0无零
无0有零Top
85 楼Eric1012()回复于 2006-11-28 22:55:45 得分 0
如果算得这么麻烦还能算是脑筋急转弯吗?大家想一想就知道了Top
86 楼Bible_Chou(日子在发霉)回复于 2006-11-29 09:04:20 得分 0
机器算的自己数数吧
93,326,215,443,944,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00Top
87 楼zzwu(未名)回复于 2006-11-29 09:22:49 得分 0
老问题了,以前早已讨论过。Top
88 楼genius_hb(本人很差)回复于 2006-11-29 09:28:23 得分 0
30 个,写个程序算下就知道了Top
89 楼buyaowen(失业中,请勿打扰)回复于 2006-11-29 09:30:52 得分 0
日了
24个是末尾的
全部的话不知道Top
90 楼linxi27(林夕)回复于 2006-11-29 10:00:13 得分 0
楼主,揭帖给分算了!
这种题目,每个案都对,角度不同,结果不同!Top
91 楼zzwu(未名)回复于 2006-11-29 10:12:35 得分 0
http://topic.csdn.net/T/20031006/10/2327400.htmlTop
92 楼zzwu(未名)回复于 2006-11-29 10:16:41 得分 0
一般地,求N阶乘的尾部0的个数的公式为:
lim([N/5]+[N/5^2]+[N/5^3]+...+[N/5^k]), k->+∞Top
93 楼zzwu(未名)回复于 2006-11-29 10:18:01 得分 0
"这种题目,每个案都对,角度不同,结果不同!"
--- 掏浆糊.
Top
94 楼maxinliangGenius(Geniues)回复于 2006-11-29 10:27:40 得分 0
MD,结果出来了,猪不会数数啊?还非要说这说那,急转弯不过是想找一个简单的算法呢!Top
95 楼hqulyc((vc++++++++...死循环了))回复于 2006-11-29 10:27:55 得分 0
中间0的个数不好求!一个中间为0的再乘一次可能就不为0了Top
96 楼ysthxj(无知者)回复于 2006-11-29 10:31:48 得分 0
同意、楼上!Top
97 楼chenlixin007(Aeolus)回复于 2006-11-29 11:44:06 得分 0
看了上面的帖子,偶生感慨:
菜鸟到处有,此贴特别多!Top
98 楼glietboys(大大(beer))回复于 2006-11-29 12:18:48 得分 0
顶下楼上的.Top
99 楼hai1039(天下)回复于 2006-11-29 12:47:30 得分 0
中间哪会有零??Top
100 楼mmmcd(超超)回复于 2006-11-29 14:21:09 得分 0
支持一下
7! = 5040,里面有2个0
末尾0很easy,
数中间的0不知道有没有好办法Top
101 楼hanyulcf()回复于 2006-11-29 14:48:50 得分 0
大家看看,30的阶乘是多少!!!
居然还有人直接写程序算的结果去数零!
正是傻的可爱!!!
我想这种基础性的东西,最基本的一些数学素质还是应该重视的!
写软件决不是只是简单的堆砌代码!!!Top
102 楼panheshun()回复于 2006-11-29 15:39:18 得分 0
hanyulcf 说得容易。。 去你妈的Top
103 楼n6002(犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇犇)回复于 2006-11-29 16:04:38 得分 0
同意panheshun的 如果 hanyulcf 不能用算法而不是数数回答出 1000!结果有几个0的话。
正确答案是---2x2x2x59Top
104 楼brothercat(猫猫 ^_^)回复于 2006-11-29 16:04:56 得分 0
如果是脑筋急转弯,这题到底算不算呢?汗~~~Top
105 楼cxz7531(大花猫)回复于 2006-11-29 16:15:56 得分 0
简单的很,不要说100,就是十万的阶乘也很容易求后面0的个数,如下程序:
public class JCCal {
public static void main(String[] args) {
System.out.println(get(100));
System.out.println(get(2000));
System.out.println(get(1800));
System.out.println(get(100000));
}
public static int get(int m) {
int count = 0;
while (m >= 5) {
count += m / 5;
m = m / 5;
}
return count;
}
}
Top
106 楼muyanpeng_mail(穆彦鹏)回复于 2006-11-29 16:28:07 得分 0
2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个 2个Top
107 楼cxz7531(大花猫)回复于 2006-11-29 16:32:42 得分 0
道理很简单。
给定一个较大的正整数m
它的阶乘=1*2*3*...*m
零是2和5相乘得到,2的个数、5的个数的最小值就是结果中0的个数,偶数中都含有2,所以2的个数远大于5。只需要求出5的个数就行了。
第一步,先看这m个数中哪些含有5,设U1=m/5(取整)则共有U1个,将这U1个数中的5提出,得U1个5 ,这U1个数变成1,2,3,...,U1
第二步 设U2=U1/5(取整),则1,2,3,U1中有U2个数含5,提取出,得U2个5,这U2个数变成1,2,3,...,U2
依次下去,直到Un小于5为止
则零的个数=U1+U2+..+Un
-------------
所以得到
public static int get(int m) {//求出m阶乘后面的0的个数
int count = 0;
while (m >= 5) {
count += m / 5;
m = m / 5;
}
return count;
}
Top
108 楼rym1020(天上人间免费在线动漫影院www.52tian.com欢迎访问)回复于 2006-11-29 17:56:05 得分 0
看了这么多回贴,没有一个人说出中间的0到底怎么算的。除了直接数数的外。
PS:楼主的标题虽然是脑筋急转弯,但我们现在已不是在讨论楼主的急转弯,而是讨论这个命题:
100!的结果中有多少个0,包括尾数的和中间的0,用什么方法可以算出来。
PS2:希望那些自以为是的“高手”们,不要再来炫耀自己算到了24个0了。
PS3:楼下的回贴前麻烦先把我楼上的贴都全看完。Top
109 楼yuxingleo()回复于 2006-11-29 18:02:01 得分 0
cxz7531(大花猫)
强啊~~!!Top
110 楼valian_logon(valian)回复于 2006-11-29 20:10:15 得分 0
看完了,新手出道,未知IT路如此艱難。。。。頭都大了
高手呀,看來我還是回家種田算了。
Top
111 楼piaopiao11()回复于 2006-11-29 20:30:24 得分 0
在好的算法如果是错的也是没用的
用笨法子算出来虽然不好,但终究是对的。。。Top
112 楼smileci()回复于 2006-11-29 21:25:31 得分 0
都是高手....各种解数...各种结果...
俺是服了...还是回家放牛简单些...Top
113 楼bbsdkjdx()回复于 2006-11-29 21:30:07 得分 0
要看末0的个数,就是看2和5中较少的那个的个数,显然5比2要少。
所以100!中末0的个数就是因子5的个数。
1到100所有的数中,含5的那部分为:(1*5)*(2*5)*.....*(20*5)
=5^20*(20!)
20!中只有5,10,15,20这四个数有4个5,所以共有24个5,即有24个末0。
一道很直白的算术题,为什么偏要让CPU转那么多圈?该人脑干的事不要让电脑干,不然程序员真的成廉价的机器了。Top
114 楼cqcmdwym(酷琪)回复于 2006-11-29 22:33:30 得分 0
24-------结尾的话就是正解
?-------所有的话不知道了Top
115 楼sunbird69(太阳鸟)回复于 2006-11-29 22:37:12 得分 0
中间的0是个问题Top
116 楼nofat(减肥必胜)回复于 2006-11-29 22:51:10 得分 0
>>> str(reduce(lambda x,y:x*y, range(1,101))).count('0')
30
>>>Top
117 楼nofat(减肥必胜)回复于 2006-11-29 22:57:05 得分 0
>>> def solve():
import time
s = time.time()
print str(reduce(lambda x,y:x*y, range(1,101))).count('0')
print 'run time: %s' % (time.time() - s)
>>> solve()
30
run time: 0.0629999637604
>>>Top
118 楼onlinedown(天涯)回复于 2006-11-29 23:14:46 得分 0
一共 30
末尾 24Top
119 楼zhishupp(质数)回复于 2006-11-30 08:56:47 得分 0
100!=
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
共计:158 位
末尾0的个数为:24
Top
120 楼goodbee(采蜂)回复于 2006-11-30 10:57:55 得分 0
2个~
Top
121 楼bamfk10231023(银狐)回复于 2006-11-30 12:52:29 得分 0
这个答案老早就有了:
1000 / 5 = 200
1000 / 25 = 40
1000 / 125= 8
1000 / 625 = 1
答案:249 ,为什么这么算以前想不通,现在明白了!
用电脑就可以了,不需要人脑算,号称是公务员的题目!Top
122 楼oyd() oyd() oyd() oyd() oyd()回复于 2006-11-30 12:55:42 得分 0
这道题数学上的正规的解法应该是这样的
实质下列=式
100! = A*10^n + (B)*10^(n-1) + ... + ZZZZ*10^0
求出右边各项系数中为0的有哪些Top
123 楼start4u()回复于 2006-11-30 13:21:28 得分 0
谁告诉我中间的六个0是怎么算的 一个个数的不用说了Top
124 楼mood8125(是男儿,总要走向远方,走向远方,让生命更辉煌...)回复于 2006-11-30 15:13:12 得分 0
markTop
125 楼songpengxing()回复于 2006-11-30 16:06:43 得分 0
牛比Top
126 楼lose_forest(无名小卒)回复于 2006-11-30 16:53:25 得分 0
既然是脑筋急转弯,哈哈 那我就来个"拿来主义"
100的阶乘里面有几个零?
1.100的阶乘怎么说都是很大的,怎么会有0?答案:100的阶乘里面没有零.
2.100的阶乘很大很大,即使里面有几个1,也可以看作是无穷多个1,何况零呢?答案:100的阶乘里面有零无穷个.
3.倘若用10进制来说明,100阶成数字里有几个0,那怎么说??看LS的答案呀!答案:100的阶乘里面有30个零.似乎最后一个最好了~笨蛋!看看题目再回答~操~我被愚弄了~大家一起上LZ!Top
127 楼jiang5448(珞珈菜鸟)回复于 2006-11-30 17:03:22 得分 0
POJ 上的做了么?/?
100!=93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000Top
128 楼yao_great(君德)回复于 2006-11-30 18:11:33 得分 0
牛人
我晕了Top
129 楼gwhzh(入门)回复于 2006-11-30 18:36:17 得分 0
有算法的.离散数学里有.Top
130 楼laiwusheng(风清扬)回复于 2006-11-30 21:36:15 得分 0
看看那个任意精度算法Top
131 楼getter(getter)回复于 2006-11-30 23:25:32 得分 0
24個呀...
Top
132 楼mmmcd(超超)回复于 2006-12-01 09:19:34 得分 0
在看帖不回帖被鄙视的年代里,流行着回帖不看帖Top
133 楼s3x4(懒虫)回复于 2006-12-01 09:55:41 得分 0
“太平洋”中间是什么?当然是“平”
=========
正解Top
134 楼jw212()回复于 2006-12-01 09:56:27 得分 0
2
24
30Top
135 楼atco(成)回复于 2006-12-01 10:17:01 得分 0
不明Top
136 楼WuBill()回复于 2006-12-01 12:38:48 得分 0
mmmcd(超超)
在看帖不回帖被鄙视的年代里,流行着回帖不看帖
精辟啊....Top
137 楼Iiukang520236(【全自动智能灌水机】)回复于 2006-12-01 12:49:09 得分 0
100!=93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000Top
138 楼Iiukang520236(【全自动智能灌水机】)回复于 2006-12-01 12:52:40 得分 0
100!=[93326215443944152681699238856266700490
7159682643816214685929638952175999932299156
08941463976156518286253697920827223758251185210916864
000000000000000000000000]
1000!= [
40238726007709377354370243392300398571937486421071
46325437999104299385123986290205920442084869694048
00479988610197196058631666872994808558901323829669
94459099742450408707375991882362772718873251977950
59509952761208749754624970436014182780946464962910
56393887437886487337119181045825783647849977012476
63288983595573543251318532395846307555740911426241
74743493475534286465766116677973966688202912073791
43853719588249808126867838374559731746136085379534
52422158659320192809087829730843139284440328123155
86110369768013573042161687476096758713483120254785
89320767169132448426236131412508780208000261683151
02734182797770478463586817016436502415369139828126
48102130927612448963599287051149649754199093422215
66832572080821333186116811553615836546984046708975
60290095053761647584772842188967964624494516076535
34081989013854424879849599533191017233555566021394
50399736280750137837615307127761926849034352625200
01588853514733161170210396817592151090778801939317
81141945452572238655414610628921879602238389714760
88506276862967146674697562911234082439208160153780
88989396451826324367161676217916890977991190375403
12746222899880051954444142820121873617459926429565
81746628302955570299024324153181617210465832036786
90611726015878352075151628422554026517048330422614
39742869330616908979684825901254583271682264580665
26769958652682272807075781391858178889652208164348
34482599326604336766017699961283186078838615027946
59551311565520360939881806121385586003014356945272
24206344631797460594682573103790084024432438465657
24501440282188525247093519062092902313649327349756
55139587205596542287497740114133469627154228458623
77387538230483865688976461927383814900140767310446
64025989949022222176590433990188601856652648506179
97023561938970178600408118897299183110211712298459
01641921068884387121855646124960798722908519296819
37238864261483965738229112312502418664935314397013
74285319266498753372189406942814341185201580141233
44828015051399694290153483077644569099073152433278
28826986460278986432113908350621709500259738986355
42771967428222487575867657523442202075736305694988
25087968928162753848863396909959826280956121450994
87170124451646126037902930912088908694202851064018
21543994571568059418727489980942547421735824010636
77404595741785160829230135358081840096996372524230
56085590370062427124341690900415369010593398383577
79394109700277534720000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
000000000000000000
]
Top
139 楼Iiukang520236(【全自动智能灌水机】)回复于 2006-12-01 12:53:41 得分 0
我专门写了个大数运算的程序,计算出来的结果,结果绝对准确,你们自己去数吧Top
140 楼savagegan(shusheng gan)回复于 2006-12-01 13:01:44 得分 0
bs回帖不看贴
老早就有7! 有2个0的反例了,还到处乱贴甚么24个0
你们的所谓算法小学生都会
大家的定势思维太严重了!!!!!!!!Top
141 楼Iiukang520236(【全自动智能灌水机】)回复于 2006-12-01 13:03:07 得分 0
10000的阶乘有35660个数字,我靠,贴不下Top
142 楼Iiukang520236(【全自动智能灌水机】)回复于 2006-12-01 13:06:26 得分 0
回复人:savagegan(savage 甘) ( 一级(初级)) 信誉:100
强烈BS savagegan
7! = 5040Top
143 楼savagegan(shusheng gan)回复于 2006-12-01 13:31:33 得分 0
to Iiukang520236(【全自动智能灌水机】) :
7! = 5040
你自己也写了结果,不是两个0吗?
你用甚么5的倍数的个数来算出2个0看看??Top
144 楼hdhmail2000(禅剑飞雪)回复于 2006-12-01 13:32:35 得分 0
楼上的注意,人家是求多少个0,而且是脑筋急转弯
至于大数的算法不是这里的主题
大数的算法俺也写过java,.net都写过了Top
145 楼Iiukang520236(【全自动智能灌水机】)回复于 2006-12-01 15:00:43 得分 0
日!!!
人家一般都是求最后有多少个零,傻B才会问有多少个零,由此可知,楼主傻BTop
146 楼WinWing(土豆╃为爱狂奔九条街╃ What's mine is mine)回复于 2006-12-02 02:13:16 得分 0
楼上虽然粗鲁,但胜在诚实Top





