神 • 10小时前
using namespace std; int n; long long a[100]={1},b[100]={0}; int main(){
cin>>n;
int carry=0;
a[0]=1;
int alen=1;
for(int j=0;j<n;j++){
int t=b[j]+a[j]+carry;
b[j]=t%10;
carry=t/10;
}
int blen=1;
for(int i=2;i<=n;i++){
carry=0;
for(int j=0;j<alen;j++){
long long tmp=a[j]*i+carry;
a[j]=tmp%10;
carry=tmp/10;
}
while(carry>0){
a[alen]=carry%10;
carry/=10;
alen++;
}
carry=0;
int maxlen=max(alen,blen);
for(int j=0;j<maxlen;j++){
int t=b[j]+a[j]+carry;
b[j]=t%10;
carry=t/10;
}
if(carry>0){
b[maxlen]=carry;
blen=maxlen+1;
}else{
blen=maxlen;
}
}
for(int i=blen-1;i>=0;i--){
cout<<b[i];
}
return 0;
}
评论:
请先登录,才能进行评论