100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 100阶乘末尾有多少个零

100阶乘末尾有多少个零

时间:2018-08-12 02:35:45

相关推荐

100阶乘末尾有多少个零

100! = 1 * 2 * 3 * ... * 99 * 100

如果结尾要有0,必然是有两个数字相乘进位了,而10 = 2 * 5,所以一个数字末尾有多少个0,取决于它分解因子后,有多少个2和有多少个5,假设2的个数为m,5的个数为n,那么最终的结果为min(m,n),而根据实际情况,当数字大于10且末尾有0的时候,显然2的个数必然大于等于5的个数,所以最终的结果取决于因子5的个数,也就是说,一个数字末尾0的个数取决于其分解因子之后5的个数,前提是它必然有0,用f(n)来表示数n末尾0的个数,即包含的因子5的个数,则100!末尾0的个数就可以表示为f(100!) = f(100) + f(99) + f(98) + ... + f(2) + f(1),其中

100末尾有2个0,即有2个因子5,f(100) = 2,

99末尾没有0,也没有因子5,即f(98) = 0

...

95末尾没有0,有因子5一个,即f(95) = 1

...

5末尾没有0,有因子5一个,即f(5) = 1

...

F(100!) = f(100) + f(99) + f(98) + ... + f(2) + f(1) = 2 + 20 + 1 + 1 = 24

此处进一步讨论任意一个数n,其含有的因子5的个数,

int f(int n){int ret = 0;while(n){if(0 == n % 5){n /= 5;++ret;}else{break;}}return ret;}

现在进一步问N!末尾有几个0

int g(int n){if(n < 5){return 0;}int sum = 0;for(int i = 1; i <= n; ++i){sum += f(i);}return sum;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。