C++ 题解 100% AC
2025-08-26 11:31:36
发布于:浙江
5阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
short f[55][105],res[205];
void stoh(string s,short h[]){
h[0]=s.size();
for(short i=1,j=s.size()-1;i<=h[0];i++,j--)h[i]=s[j]-'0';
}
void mul(short a[],short b[],short c[]){
c[0]=a[0]+b[0]-1;
for(short i=1;i<=a[0];i++){
for(short j=1;j<=b[0];j++){
c[i+j]+=(a[i]*b[j]+c[i+j-1])/10;
c[i+j-1]=(a[i]*b[j]+c[i+j-1])%10;
}
}
if(c[c[0]+1]>0)c[0]++;
}
void add(short a[],short c[]){
c[0]=max(a[0],c[0]);
for(short i=1;i<=c[0];i++){
c[i]+=a[i];
c[i+1]+=c[i]/10;
c[i]%=10;
}
if(c[c[0]+1]>0)c[0]++;
}
void print(short x[]){
for(short i=x[0];i>=1;i--)cout<<x[i];
}
signed main(void){
short n;
cin>>n;
stoh("1",f[1]);
for(short i=2;i<=n;i++){
short tmp[105]{};
stoh(to_string(i),tmp);
mul(f[i-1],tmp,f[i]);
}
for(short i=1;i<=n;i++)add(f[i],res);
print(res);
return 0;
}
这里空空如也
有帮助,赞一个