zoukankan      html  css  js  c++  java
  • 阶乘问题

    阶乘问题

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

    题目描述

    也许你早就知道阶乘的含义,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
    【分析】可能数据有点水,,不知道我找的规律对不对。比如23!,从1*2*...10然后从11*12*...20然后从21*22*23.大家看前两段末尾非零值都是相同的,都是8,
    也就是说每一个10!末尾非零值都是8.那就看这个数有多少个10了。而且8^1=8,8^2=4(末尾非零),8^3=2,8^4=6,8^4=8...这是循环的,那么下面就好办了。
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <algorithm>
    #include <climits>
    #include <cstring>
    #include <string>
    #include <set>
    #include <map>
    #include <queue>
    #include <stack>
    #include <vector>
    #include <list>
    #include<functional>
    #define mod 1000000007
    #define inf 0x3f3f3f3f
    #define pi acos(-1.0)
    using namespace std;
    typedef long long ll;
    const int N=805;
    const int M=15005;
    ll sum=1;
    int n,m;
    int a[5]={6,8,4,2};
    char s[M];
     
    int main()
    {
        scanf("%d",&n);
        m=n/10;
        m%=4;
        int k=a[m];
        for(int i=1;i<=n%10;i++){
            k*=i;
        }printf("%d
    ",k%10);
        return 0;
    }
    View Code

     卧槽  这个做法好像错了  大家不要参考啊  实在抱歉

  • 相关阅读:
    Python3安装
    HTML基础
    Python Socket
    python常用模块
    JSON.stringify的三个参数
    判断数组中存在重复元素
    vant-ui表单验证
    如何计算出浏览器的帧数?requestAnimationFrame
    js判断两个区间是否存在交集
    怎么在组件内部判断出是否插入了slot
  • 原文地址:https://www.cnblogs.com/jianrenfang/p/5751866.html
Copyright © 2011-2022 走看看