zoukankan      html  css  js  c++  java
  • 阶乘问题 n!后最右边非0的数

     阶乘问题

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 66  解决: 13
    [提交][状态][讨论版]

    题目描述

    也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如:
        12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001,600
    12的阶乘最右边的非零位为6。
        写一个程序,计算N(1<=N<=50,000,000)阶乘的最右边的非零位的值。
    注意:10,000,000!有2499999个零。

    输入

    仅一行包含一个正整数N。

    输出

    单独一行包含一个整数表示最右边的非零位的值。

    样例输入

    12
    

    样例输出

    6

    #include <cstdio>
    #include <algorithm>
    #define ll long long
    #define maxn 800010
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<< 1 | 1
    using namespace std;
    int s[100];
    int main(){
        int num,n,add,pai[4]={6,2,4,8};
        while(~scanf("%d",&n)){
            num=n;
            add=0;
            while(num){
                if(num%5==2){
                    add+=1;
                }
                else{
                    if(num%5==4)
                        add+=2;
                }
                add+=num/5;
                num/=5;
            }
            if(n>1){
                printf("%d
    ",pai[add%4]);
            }
            else printf("1
    ");
        }
    }
  • 相关阅读:
    洛谷 P1443 马的遍历
    括号序列 (自出水题)
    19年清北学堂冬令营游记
    计数排列(模板)
    全排列
    unique去重
    链表 模板+详解
    输入输出优化
    关于广/宽度优先搜索
    第四周 6.7-6.13
  • 原文地址:https://www.cnblogs.com/acmtime/p/5762883.html
Copyright © 2011-2022 走看看