欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

阶乘计算(大数)

程序员文章站 2022-03-09 16:11:01
...
#include <iostream>
#include <vector>

using namespace std;

vector<int> stratum(int n){
    vector<int> str;
    int m=0,p;//m为进位 p为当前位置上经过乘计算 和 加计算的数
    str.push_back(1);//初始值;
    int i,j;
    for(i=1;i<=n;i++){
        for(j=0;j<str.size();j++){
            p=str[j]*i+m;
            str[j]=p%10;
            m=p/10;
            if(j==str.size()-1&&m!=0){//当容量不足以完成进位计算时扩容
                str.push_back(0);
            }
        }
    }
    return str;
}

int main()
{
    vector<int>str;
    int n;
    cin>>n;
    str=stratum(n);
    for(int i=str.size()-1;i>=0;i--)
    cout<<str[i];
    return 0;
}

测试输入1000

输出为阶乘计算(大数)