zoukankan      html  css  js  c++  java
  • N的阶乘 51Nod


    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    #include <queue>
    #include <stack>
    #include <string.h>
    
    using namespace std;
    void jc(int n)
    {
        int a[50000],i,j,k,ce,te,m;
        m=1;
        memset(a,0,sizeof(a));
        a[1]=1;
        for(i=2; i<=n; i++)
        {
            te=0;
            for(j=1; j<=m; j++)
                a[j]*=i;
            for(j=1; j<=m; j++)
            {
                ce=te+a[j];
                a[j]=ce%10000;
                te=ce/10000;
            }
            while(te)
            {
                m++;
                a[m]=te%10000;
                te/=10000;
            }
        }
        for(i=m; i>=1; i--)
        {
            if(i==m)
                printf("%d",a[i]);
            else
                printf("%04d",a[i]);
        }
        printf("
    ");
    }
    
    int main()
    {
        int n;
        scanf("%d",&n);
            jc(n);
        return 0;
    }

     

    思路: 大数的阶乘主要是考虑用数组模拟乘法解决,但是简单的
    用数组一个元素代表一个数字,很可能会时间超限(当然
    ,只是有可能会超限,注意一下输出就行了。有大佬博客
    http://www.cnblogs.com/zznu17-091041/p/8407632.html)
    ,用一个元素代表10000以内的数就节省许多时间.
    输入N求N的阶乘的准确值。
    Input输入N(1 <= N <= 10000)Output输出N的阶乘Sample Input
    5
    Sample Output
    120
  • 相关阅读:
    Java从零开始学二十一(集合List接口)
    Java从零开始学二十(集合简介)
    初识软件工程一
    JAVA中AES对称加密和解密
    java中的数据加密
    Redis哨兵
    Nginx
    Zuul介绍
    ELK快速搭建日志平台
    Kibana安全特性之权限控制
  • 原文地址:https://www.cnblogs.com/mashen/p/8448579.html
Copyright © 2011-2022 走看看