我 不 理 解
查看原帖
我 不 理 解
244175
Plex楼主2021/11/9 15:28
#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;
}

然而如此美丽的代码却是零分。。。

2021/11/9 15:28
加载中...