~~我jio得我的思路没问题啊~~~
错误代码:↓
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
int n;
int len;
int s[1001];
ULL jc(int x) //计算阶乘
{
int sum=1;
for(int i=x;i;i--)sum*=i;
return sum;
}
void add(ULL a) //高精度求和
{
int k=0;
while(a!=0)
{
int x=a%10;
a/=10,k++;
s[k]+=x;
if(s[k]>=10)s[k+1]+=s[k]/10,s[k]%=10;
len=max(len,k);
}
}
void jw() //进位
{
for(int i=1;i<=len+1;i++)
if(s[i]>=10)s[i+1]+=s[i]/10,s[i]%=10;
}
void output() //测试输出
{
len++;
while(s[len]==0)len--;
for(int i=len;i;i--)printf("%d",s[i]);
puts("");
puts("");
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
ULL x=jc(i);
add(x);
jw();
// output();
}
len++;
while(s[len]==0)len--; //去除前导零
for(int i=len;i;i--)printf("%d",s[i]);
return 0;
}
求各位大佬帮忙!!!QwQ