1. 程式人生 > >1003 階乘後面0的數量(51nod) 解題報告

1003 階乘後面0的數量(51nod) 解題報告

基準時間限制:1 秒 空間限制:131072 KB 分值: 5 難度:1級演算法題

 收藏

 關注

n的階乘後面有多少個0?

6的階乘 = 1*2*3*4*5*6 = 720,720後面有1個0。

Input

一個數N(1 <= N <= 10^9)

Output

輸出0的數量

Input示例

5

Output示例

1

勒讓德定理:在標準的素因子分解式中,素數p的指數為∑(i=1,p^i<=n)[n/p^i](向下取整)。此題直接算出5的指數即可。

可見,有了數學定理算起來就是不一樣啊 

程式碼:

/*
1003 階乘後面0的數量

*/
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
#define ll long long
const int N=50005;


int main()
{
    //判斷有多少個2和5因子
    //由於2的個數一定比5多,故只要判斷5的個數即可
    int n;

    while(scanf("%d",&n)==1)
    {
        int sum=0;
        int pul=5;
        for(int i=1;pul<=n;i++)
        {
            sum+=n/pul;
            pul*=5;
        }
        printf("%d\n",sum);
    }
    return 0;
}