输入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;
}