0分?!!!!!
查看原帖
0分?!!!!!
1457886
poordoor楼主2024/11/8 01:56
#include<bits/stdc++.h>
using namespace std;
string sold="1",snew,sum="1";
string jia(string s1,string s2){
	int a[255]={0},b[255]={0},c[255]={0};
	for(int i=0;i<s1.size();i++){
		a[i]=s1[s1.size()-i-1]-'0';
	}
	for(int i=0;i<s2.size();i++){
		b[i]=s2[s2.size()-i-1]-'0';
	}
	int len=s1.size();
	if(s2.size()>len)len=s2.size();
	for(int i=0;i<len;i++){
		c[i]=a[i]+b[i];
	}
	for(int i=0;i<len;i++){
		if(c[i]>=10){
			c[i+1]+=c[i]/10;
			c[i]%=10;
		}
	}
	if(c[len]!=0)len++;
	string ret="";
	for(int i=len-1;i>=0;i--){
		ret=ret+char(c[i]+'0');
	}
	return ret;
}
string cheng(string s1,string s2){
	int a[255]={0},b[255]={0},c[255]={0};
	for(int i=0;i<s1.size();i++){
		a[i]=s1[s1.size()-i-1]-'0';
	}
	for(int i=0;i<s2.size();i++){
		b[i]=s2[s2.size()-i-1]-'0';
	}
	for(int i=0;i<s1.size();i++){
		for(int j=0;j<s2.size();j++){
			c[i+j]=a[i]*b[j];
			if(c[i+j]>=10){
				c[i+j+1]+=c[i+j]/10;
				c[i+j]%=10;
			}
		}
	}
	int p=0;
	for(int i=s1.size()+s2.size();i>=0;i--){
		if(c[i]!=0){
			p=i;
			break;
		}
	}
	string ret="";
	for(int i=p;i>=0;i--){
		ret=ret+char(c[i]+'0');
	}
	return ret;
}
int main(){
	int n;
	cin>>n;
	if(n==1||n==0)cout<<1;
	for(int iw=2;iw<=n;iw++){
	string sss=to_string(iw);
	snew=cheng(sss,sold);
	sold=snew;
	sum=jia(snew,sum);
	}
	cout<<sum;
	return 0; 
}
2024/11/8 01:56
加载中...