A7877.阶乘之和 题解
2025-06-21 21:16:53
发布于:北京
9阅读
0回复
0点赞
经典高精度
#include <bits/stdc++.h>
using namespace std;
int n,a[2200],b[2200],c[2200];
void fact(int n,int c[]){
c[0]=1;
for (int i=1;i<=n;i++){
for (int j=0;j<=2100;j++){
c[j]*=i;
}
for (int j=0;j<=2100;j++){
c[j+1]+=c[j]/10;
c[j]%=10;
}
}
}
void add(int x[],int y[],int z[]){
for (int i=0;i<2100;i++){
int t=x[i]+y[i]+z[i];
z[i+1]=t/10;
z[i]=t%10;
}
}
int main(){
cin>>n;
for (int i=1;i<=n;i++){
fact(i,a);
add(a,c,b);
for (int i=0;i<=2100;i++) c[i]=b[i];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
}
int x=2100;
while (x>0&&c[x]==0) x--;
for (int i=x;i>=0;i--) cout<<c[i];
return 0;
}
这里空空如也
有帮助,赞一个