求助!最后一个错了,n=48

P1009 [NOIP1998 普及组] 阶乘之和

61qf222 @ 2022-10-21 20:24:51

#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;

// 高精度加法 
vector<int> mysum(vector<int> a,vector<int> b)
{
    vector<int> res;
    int grad=0;
    int i;
    for(i=0;i<a.size()||i<b.size();i++)
    {
        int temp=grad;
        if(i<a.size())temp+=a[i];
        if(i<b.size())temp+=b[i];
        res.push_back(temp%10);
        grad=temp/10;
    }
    if(grad)res.push_back(grad);
    return res;
}
vector<int> torv(int a)
{
    vector<int> res;
    while(a)
    {
        res.push_back(a%10);
        a/=10;
    }
    return res;
}
// 高精度乘法 
vector<int> mymul(vector<int> a,int b)
{
    vector<int> res;
    int grad=0;
    for(int i=0;i<a.size();i++)
    {
        int temp=a[i]*b+grad;
        res.push_back(temp%10);
        grad=temp/10;
    }
    if(grad)res.push_back(grad);
    return res;
}
int main()
{
    int n;
    cin>>n;
    vector<int> sum;
    for(int i=1;i<=n;i++)
    {
        vector<int> temp={1};
        for(int j=1;j<=i;j++)
        {
            temp=mymul(temp,j);
        } 
        sum=mysum(sum,temp);
    } 
    reverse(sum.begin(),sum.end());
    for_each(sum.begin(),sum.end(),[](int x){cout<<x;});
}

by Dream_Creator @ 2022-10-21 20:28:48

@61qf222 打表


|