75pts,求调
查看原帖
75pts,求调
1063541
ivan11楼主2024/5/1 11:20
include<iostream>
#include<cstring>
#include<string>
using namespace std;
const int len = 5005;
struct big
{
	long long l;
	long long a[len];
	
	void clear()
	{
		for(int i=l;i>=2;--i)
		{
			if(!a[i]) -- l;
			else break ;
		}
		return ;
	}
	
	void in()
	{
		string s;
		cin>>s;
		l=s.length();
		for(int i=1;i<=l;++i)
		{
			a[i] = (s[l-i] & 15);
		}
		return ;
	}
	
	void out()
	{
		clear();
		for(int i=l;i>=1;--i)
		{
			cout<<a[i];
		}
		cout<<'\n';
		return ;
	}
	
	big operator + (big b)const 
	{
		big c;
		memset(c.a,0,sizeof(c.a));
		c.l = max(l,b.l) + 1;
		for(int i=1;i<=c.l;++i)
		{
			c.a[i] += a[i] + b.a[i];
			c.a[i+1] = c.a[i] / 10;
			c.a[i] %= 10;
		}
		return c;
	}
	
	big operator * (int b)const
	{
		big c;
		memset(c.a,0,sizeof(c.a));
		c.l = l + 1;
		for(int i=1;i<=l;++i)
		{
			c.a[i] += a[i] * b;
		}
		for(int i=1;i<=c.l;++i)
		{
			c.a[i+1] += c.a[i] / 10;
			c.a[i] %= 10;
		}
		return c;
	}
}num,ans;
long long n;

int main()
{
	cin>>n;
	memset(num.a,0,sizeof(num.a));
	memset(ans.a,0,sizeof(ans.a));
	num.l=1;
	num.a[1]=1;
	ans.l=1;
	ans.a[1]=1;
	for(int i=2;i<=n;++i)
	{
		num = num * i;
		ans = ans + num;
	}
	ans.out();
	return 0;
}
2024/5/1 11:20
加载中...