打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
那些奇奇怪怪的算法题(1)

163!尾数有多少个零?答案是39个。这不是重点,重点是如何得到答案。


我们知道一个数X尾数有零是因为X是10的倍数。凑巧的是10 = 5 x 2, 也就是说我们只要数数看一个数里面有多少个数是5的倍数或2的倍数,就可以知道这个数的阶乘尾数有多少个零。

更加凑巧的是,一个数中2的含量总是比5要多,因此我们只要关注5就行了。

以163!为例,163 / 5 = 32。这看上去像是正确答案,然而我们漏掉了25的存在。显然每隔25项,它就会多一个5出来。同理可得125也是这样。

因此正确答案是 163 / 5 + 163 / 25 + 163 / 125 = 39.


C++实现


#include <iostream>
#include <math.h>
using namespace std;

void main()
{
int N;
int num_of_zero = 0;
int num_of_zero_of_N = 0;
cin >> N;
if (N < 0)
return;
for (int i=N, j=1; i>0; j++)
{
i /= 10;
num_of_zero += N / pow(5.0, j);
}

cout<<num_of_zero<<endl;
}


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
1024! 末尾有多少个0?
535,剑指 Offer-扑克牌中的顺子
LeetCode之Number Complement
求数组乘集最大结果
面试题
LeetCode 172.阶乘后的零(简单)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服