题目描述
请求出1!+2!+3!+4!+...+n!,请注意,n<=50。
n!=n*(n-1)*(n-2)*...*1,如:5!=5*4*3*2*1=120。
输入
请输入一个整数n(n<=50)
#include <bits/stdc++.h>
using namespace std;
string jiecheng(int n){
char a[300];
a[0]='1';
int len=1;
for(int i=2;i<=n;i++){
int jin=0;
for(int j=0;j<len;j++){
int t= i*(a[j]-'0')+jin;
jin=t/10;
a[j]=t%10+'0';
}
while(jin>0){
a[len]=jin%10+'0';
len++;
jin=jin/10;
}
}
string s="";
for(int i=len-1;i>=0;i--){
//cout<<a[i];
s=s+a[i];
}
return s;
}
string jia(string s1,string s2){
char s3[300];
if(s1.length()<s2.length()){
swap(s1,s2);
}
int len1=s1.length();
int len2=s2.length();
for(int i=0;i<len1-len2;i++ ){
s2="0"+s2;
}
int jin=0;
for(int i=len1-1;i>=0;i--){
int t=s1[i]-'0'+s2[i]-'0'+jin;
jin=t/10;
s3[i]=t%10+'0';
}
string ss="";
if(jin>0){
ss=ss+"1";
}
for(int i=0;i<len1;i++){
ss=ss+s3[i];
}
return ss;
}
int main(int argc, char** argv) {
//freopen("abc.txt","r",stdin);
string s1="0",s2;
int n;
cin>>n;
for(int i=1;i<=n;i++){
s2=jiecheng(i);
s1=jia(s1,s2);
}
cout<<s1;
return 0;
}