zoukankan      html  css  js  c++  java
  • 大数阶乘

    输入一个正整数n,输出n!的值。

    其中n!=123…n。

    算法描述

    n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。

    将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。

    首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。

    输入

    输入包含一个正整数n,n<=1000。

    输出

    输出n!的准确值。

    样例输入

    10

    样例输出

    3628800

    代码:

    #include <iostream>
    #include <cstdio>
    #include<map>
    #include<algorithm>
    #include<math.h>
    #include<string.h>
    #include <cmath>
    #include<sstream>
    using namespace std;
    #define N   30000
    int a[N]= {1};
    
    int main()
    {
        int n,pos,maxpos = 0;
        cin>>n;
        for(int i = 1; i <= n; i++)
        {
            int temp = 0;
            for (pos = 0; pos <= maxpos ; pos++)
            {
                temp += a[pos]*i;
                a[pos] = temp%10;
                temp /=10;
            }
            while(temp)
            {
                a[pos++] = temp%10;
                temp /=10;
            }
            pos--;
            maxpos = pos > maxpos? pos :maxpos;
        }
        maxpos++;
        while(maxpos--)
            cout<<a[maxpos];
        return 0;
    }
  • 相关阅读:
    省选模拟81
    概率期望+计数
    省选模拟80
    省选模拟79
    省选模拟78
    Jenkins 安装及 Git | Maven 安装
    虚拟机VirtualBox及轻量级的CentOS
    服务器免密码登录
    Nginx 常用配置模板
    IDEA配置 及 快捷键
  • 原文地址:https://www.cnblogs.com/cmmdc/p/6767257.html
Copyright © 2011-2022 走看看