33以后的数据出错
查看原帖
33以后的数据出错
371666
realczy楼主2020/8/18 19:28

输入33以后的数据错了,有大佬知道错误在哪吗。。。

#include <bits/stdc++.h>
using namespace std;

vector<int> factorial(int& n)
{
    vector<int> v(5000,0);
    v[4999]=1; int len=0; int plus=0;
    for (int i = 2; i <= n; ++i)
    {
        for (int j=4999; j>=0; j--)
        {
            int temp = v[j];
            v[j] = (v[j]*i)%10 + plus;
            if (temp*i>=10)
                plus = (temp*i)/10;
            else
                plus=0;
        }
    }

    return v;
}
void addVector(vector<int>& res, vector<int>& v)
{
    for (int i = 0; i <5000; i++)
        res[i]+=v[i];
}
int main() {
    int n;
    cin >> n;
    vector<int> res(5000,0);
    for (int i = 1; i <= n; ++i)
    {
        vector<int> v = factorial(i);
        addVector(res,v);
    }
    for (int i = 4999; i >= 0; i--)
    {
        if (res[i]>=10)
        {
            res[i-1]+=res[i]/10;
            res[i]=res[i]%10;
        }
    }
    while (res.front()==0)
        res.erase(res.begin());
    for (int i = 0; i < res.size(); ++i) {
        cout << res[i];
    }

    return 0;
}
2020/8/18 19:28
加载中...