列表

详情


XM25. 求整数的阶乘

描述

求任一正整数的阶乘(注意:是任意正整数)
该正整数不大于1000。

输入描述

输入一个正整数

输出描述

输出一个正整数

示例1

输入:

3

输出:

6

示例2

输入:

10

输出:

3628800

原站题解

C++14 解法, 执行用时: 3ms, 内存消耗: 488KB, 提交时间: 2020-05-20

#include<iostream>
#include<iomanip>
#include<vector>
using namespace std;
int main()
{
    int n;
    cin>>n;
    vector<long> h;
    h.push_back(1);
    int temp=0;
    for(int i=2;i<=n;i++)
    {
        temp=0;
        for(int j=0;j<h.size();j++)
        {
            h[j]=h[j]*i+temp;
            temp=h[j]/1000000000000000;
            h[j]=h[j]%1000000000000000;
        }
        if(temp)
          h.push_back(temp);
    }
    cout<<h.back();
    for(int i=h.size()-2;i>=0;i--)
    {
        cout<<setw(15)<<setfill('0')<<h[i];
    }
    return 0;
}

C++14 解法, 执行用时: 3ms, 内存消耗: 488KB, 提交时间: 2020-04-26

#include<iostream>
#include<iomanip>
#include<vector>
using namespace std;
int main()
{
    int n;
    cin>>n;
    vector<long> h;
    h.push_back(1);
    int temp=0;
    for(int i=2;i<=n;i++)
    {
        temp=0;
        for(int j=0;j<h.size();j++)
        {
            h[j]=h[j]*i+temp;
            temp=h[j]/1000000000000000;
            h[j]=h[j]%1000000000000000;
        }
        if(temp)
          h.push_back(temp);
    }
    cout<<h.back();
    for(int i=h.size()-2;i>=0;i--)
    {
        cout<<setw(15)<<setfill('0')<<h[i];
    }
    return 0;
}

上一题