末尾零的个数(数论)

末尾零的个数

N! 末尾有多少个 000 呢?

N!=1×2×⋯×N

里面讲到只有2和5遇到才会产生0(或者2的倍数和5的倍数)

然是2的个数比5的多,所以只需要计算n中包含多少个5就行

例如100

100/5=20.。20/5=4.。4/5=0 所以100!有24个0

不就是求5的个数嘛?为什么还不断循环除5呢?100/5不就是5的个数了嘛?

其实不是的,我最初就有这个疑惑。

无限的除以5是因为100/5=20.在20里面每5个数还有5的倍数,即在100里面每25个数也有一个5的倍数

例如25=5*5.如果单纯的用100/5,至少这个是少计算一次

code:

    #include  
    #include  
    #include  
    #include  
    #include  
    #include  
    #include  
    #include  
    using namespace std;  
    const long long mod=1e15;  
    int main(){  
        int n;  
        cin>>n;  
        int sum=0;  
        while(n){  
            sum+=n/5;  
            n/=5;  
        }  
        cout<

 

 

 

你可能感兴趣的:(#,思维技巧,#,数论)