大整数的乘法与加法
查看原帖
大整数的乘法与加法
1097715
neinei255楼主2024/12/22 00:31
#include <bits/stdc++.h> 
using namespace std;
string A(string& a,int i)
{
	string s="";
	int cant=0;
	while(a!="" || cant!=0)
	{
     int x=(a.empty())?0:a[a.size()-1]-'0';
     s+=(char)(((x*i)%10+cant%10)%10+'0');
     cant=(x*i)/10+cant/10+((x*i)%10+cant%10)/10;
     if(!a.empty())
     a.pop_back();
	}
	reverse(s.begin(),s.end());
	return s;
}
string B(string a,string b)
{
	int cant=0;
	string s="";
	while(a!=""||b!=""||cant!=0)
	{
		int x=(a.empty())?0:a[a.size()-1]-'0';
		int y=(b.empty())?0:b[b.size()-1]-'0';
		s+=(char)((x+y+cant)%10+'0');
		cant=(x+y+cant)/10;
		if(!a.empty())
		a.pop_back();
		if(!b.empty())
		b.pop_back(); 
	}
	reverse(s.begin(),s.end());
	return s;
}
int main()
{
long long n;
string a="1",b="1";
cin >>n;
for(int i=2;i<=n;i++)
{
	a=A(a,i);
	b=B(a,b); 
}
cout <<b; 
} 

A函数是大整数的乘法 B函数是大整数的加法 字符串a为i! b为Si,及i的前阶层项和

2024/12/22 00:31
加载中...