#include<bits/stdc++.h>
using namespace std;
class BigInterger
{
private :
array<int,10005> wei;
public:
// BigInterger():
// wei(10005)
// {
// }
inline void clear()
{
for(int i=0;i<=10005;++i)
{
wei[i]=0;
}
return;
}
int size() const
{
int sum=0;
for(int i=wei.size()-1;i>0&&wei[i]==0;--i)
{
sum++;
}
return wei.size()-sum;
}
inline BigInterger& operator=(const BigInterger &obj)
{
wei=obj.wei;
return *this;
}
inline BigInterger& operator=(int &num)
{
int n2=num;
this->clear();
int len=0;
while(n2>0)
{
wei[len++]=n2%10;
n2/=10;
}
return *this;
}
inline BigInterger& operator=(const int &num)
{
int n2=num;
*this=n2;
return *this;
}
inline bool operator==(int num)
{
int len=0;
while(num>0)
{
if(wei[len++]!=num%10) return false;
num/=10;
}
return true;
}
inline BigInterger& operator+=(const BigInterger &obj)
{
int len=cmp(*this,obj);
for(int i=0;i!=len;++i)
{
wei[i]+=obj.wei[i];
if(wei[i]>=10)
{
++wei[i+1];
wei[i]-=10;
}
}
return *this;
}
inline BigInterger& operator*=(const BigInterger &obj)
{
BigInterger tmp=*this;
this->clear();
int lena=tmp.size();
int lenb=obj.size();
for(int i=0;i<=lena;++i)
{
for(int j=0;j<=lenb;++j)
{
wei[i+j]+=tmp.wei[i]*obj.wei[j];
wei[i+j+1]+=wei[i+j]/10;
wei[i+j]%=10;
}
}
return *this;
}
inline BigInterger& operator*=(const int &num)
{
int len=size();
for(int i=0;i<len;++i)
{
wei[i]*=num;
wei[i+1]+=wei[i]/10;
wei[i]%=10;
}
return *this;
}
inline BigInterger operator-(const BigInterger &obj)
{
BigInterger ans;
BigInterger tmp=*this;
int len=cmp(*this,obj);
for(int i=0;i<len;++i)
{
ans.wei[i]=tmp.wei[i]-obj.wei[i];
if(ans.wei[i]<0){ ans.wei[i]+=10; --tmp.wei[i+1]; }
}
return ans;
}
inline BigInterger operator-(int num)
{
BigInterger tmp;
tmp=num;
return *this-tmp;
}
inline void reserve(const unsigned &sum,const int val=0);
friend inline istream& operator>>(istream& in,BigInterger &val);
friend inline ostream& operator<<(ostream& out,const BigInterger &val);
friend inline int cmp(const BigInterger&,const BigInterger&);
};
//..............all the friends...................//
inline int cmp(const BigInterger &a,const BigInterger &b)
{
return a.wei.size()>b.wei.size()?a.wei.size():b.wei.size();
}
inline istream& operator>>(istream& in,BigInterger &val)
{
string buff;
in>>buff;
int len=buff.size();
for(int i=len-1;i>=0;--i)
{
val.wei[len-i-1]=buff[i]-48;
}
return in;
}
inline ostream& operator<<(ostream& out,const BigInterger &val)
{
for(int i=val.size()-1;i>=0;--i)
{
out<<val.wei[i];
}
return out;
}
//..........declarations.............//
int n;
BigInterger num[3000];
BigInterger ans;
BigInterger a,b;
//.........functions..............//
//.......main function............//
int main()
{
ans=0;
for(int i=1;i<=50;++i)
{
num[i]=1;
}
cin>>n;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=i;++j)
{
num[i]*=j;
}
ans+=num[i];
}
cout<<ans;
return 0;
}
然而如此美丽的代码却是零分。。。