• HDUOJ 1042 N!


    N!

    Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 56209    Accepted Submission(s): 15948


    Problem Description
    Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
     

    Input
    One N in one line, process to the end of file.
     

    Output
    For each N, output N! in one line.
     

    Sample Input
    1 2 3
     

    Sample Output
    1 2 6
     

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #define N 50000
    using namespace std;
    
    int fac[N];
    int calc(int n)
    {
        memset(fac,0,sizeof(fac));
        fac[0] = 1;
        for(int i=1; i<=n; i++)
        {
            for(int j=0; j<N; j++)
                fac[j] *= i;
            for(int j=0; j<N-1; j++)
            {
                if(fac[j]>=10)
                {
                    fac[j+1] += fac[j]/10;
                    fac[j] = fac[j]%10;
                }
            }
        }
        for(int i=N-1; i>=0;i--)
        {
            if(fac[i]!=0)
                return i;
        }
    }
    
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            int i;
            i = calc(n);
            while(i>=0)
            {
                printf("%d",fac[i]);
                i--;
            }
    
            printf("
    ");
        }
        return 0;
    }
    


  • 相关阅读:
    windows下载
    vue-element-admin改造步骤
    js处理url
    好用的工具
    数据库设计工具
    虚拟机使用
    Mac上编译C
    MAC系统配置
    SQL语法
    SSMP一次请求数据处理过程分析
  • 原文地址:https://www.cnblogs.com/kunsoft/p/5312804.html
Copyright © 2020-2023  润新知