欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

【经典智力题】1024! 末尾有多少个0?——“计算阶乘末尾0的数量”问题引出

发布时间:2024/1/1 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【经典智力题】1024! 末尾有多少个0?——“计算阶乘末尾0的数量”问题引出 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

网上有这样一个广为流传的有趣问题:


1024! 末尾有多少个0?


相应的解法是:


末尾0的个数取决于乘法中因子2和5的个数。显然乘法中因子2的个数大于5的个数,所以我们只需统计因子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。


int countZeros( int n ){int num = 0;while( n > 5 ){n = ( n - (n%5) ) / 5;num += n;}return num; }



这让我忽然想到ACM里面有一道“计算某数阶乘末尾0的个数”的题目,于是找了一下,是POJ的,题目地址在这: 点击打开链接


我又自己做了一下这道题目,一遍AC,贴代码留念。


AC代码如下:

#include <iostream>using namespace std;int countZeros( int n ){int num = 0;while( n >= 5 ){n /= 5;num += n;}return num; }int main() {int n;while( cin>>n ){while( n-- ){int m;cin>>m;cout<<countZeros(m)<<endl;}}return 0; }



总结

以上是生活随笔为你收集整理的【经典智力题】1024! 末尾有多少个0?——“计算阶乘末尾0的数量”问题引出的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。