码迷,mamicode.com
首页 > 其他好文 > 详细

阶乘末尾0的个数

时间:2020-01-31 16:10:37      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:+=   出现   code   问题   out   直接   bsp   连续   个数   

问题很简单:给定一个整数n,那么n的阶乘末尾有多少个连续的0呢?

那个可以去求这个阶乘吗,大数的代码上去一套?这个大数求出来肯定是很慢的,还有其他方法吗,你可以观察一个产生0,本质是2*5,出现了2一定会出现5,2的个数会大于5的个数,所以我可以直接统计5的个数,统计每个数有几个因子5

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while (cin >> n)
    {
        int num = 0 ,i;
        for(int m=1;m<=n;m++)
        {
            i=m;
            while (i % 5 == 0)
            {
                i=i/5;
                num++;
            }
        }
        cout << num << endl;
    }
}

当然可以直接关注5

f(5!) = 1 + f(1!) = 1
f(10!) = 2 + f(2!) = 2
f(20!) = 4 + f(4!) = 4
f(100!) = 20 + f(20!) = 20 + 4 + f(4!) = 24
f(1000!) = 200 + f(200!) = 200 + 40 + f(40!) = 240 + 8 + f(8!) = 248 + 1 + f(1) =249

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while (cin >> n)
    {
        int num = 0;
        while (n > 0) {
            num += n / 5;
            n /= 5;
        }
        cout << num << endl;
    }
}

 

阶乘末尾0的个数

标签:+=   出现   code   问题   out   直接   bsp   连续   个数   

原文地址:https://www.cnblogs.com/BobHuang/p/12245428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!