求助!最后一个错了,n=48
查看原帖
求助!最后一个错了,n=48
831468
61qf222楼主2022/10/21 20:24
#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;

// 高精度加法 
vector<int> mysum(vector<int> a,vector<int> b)
{
	vector<int> res;
	int grad=0;
	int i;
	for(i=0;i<a.size()||i<b.size();i++)
	{
		int temp=grad;
		if(i<a.size())temp+=a[i];
		if(i<b.size())temp+=b[i];
		res.push_back(temp%10);
		grad=temp/10;
	}
	if(grad)res.push_back(grad);
	return res;
}
vector<int> torv(int a)
{
	vector<int> res;
	while(a)
	{
		res.push_back(a%10);
		a/=10;
	}
	return res;
}
// 高精度乘法 
vector<int> mymul(vector<int> a,int b)
{
	vector<int> res;
	int grad=0;
	for(int i=0;i<a.size();i++)
	{
		int temp=a[i]*b+grad;
		res.push_back(temp%10);
		grad=temp/10;
	}
	if(grad)res.push_back(grad);
	return res;
}
int main()
{
	int n;
	cin>>n;
	vector<int> sum;
	for(int i=1;i<=n;i++)
	{
		vector<int> temp={1};
		for(int j=1;j<=i;j++)
		{
			temp=mymul(temp,j);
		} 
		sum=mysum(sum,temp);
	} 
	reverse(sum.begin(),sum.end());
	for_each(sum.begin(),sum.end(),[](int x){cout<<x;});
}
2022/10/21 20:24
加载中...