啊啊啊哪儿错了来位大佬康康
查看原帖
啊啊啊哪儿错了来位大佬康康
1387883
Yangshuhao123楼主2024/8/31 22:02
#include<bits/stdc++.h>
using namespace std;
string multiplication(string s1,string s2){
	string ans;
	int i,j,a[1000],b[1000],c[1000];
	if(s1=="0"||s2=="0")
	 cout<<0;
	for(i=0;i<s1.size();i++)
	 a[s1.size()-1-i]=s1[i]-48;
	for(i=0;i<s2.size();i++)
	 b[s2.size()-1-i]=s2[i]-48;
	int l=s1.size()+s2.size();
	for(i=0;i<s1.size();i++)
	 for(j=0;j<s2.size();j++)
	  c[i+j]+=a[i]*b[j];
	for(i=0;i<l;i++)
	  if(c[i]>9){
	  	c[i+1]+=c[i]/10;
	  	c[i]%=10;
	  }
	for(i=l-1;i>=0;i--){
		if(c[i]==0)
		 l--;
		else
		 break;
	}
	for(i=l-1;i>=0;i--)
	 ans=ans+char(c[i]+48);
	return ans;
}
string addition(string s1,string s2){
	string ans;
	int i,a[1000],b[1000],c[1000];
	for(i=0;i<s1.size();i++)
	 a[s1.size()-1-i]=s1[i]-48;
	for(i=0;i<s2.size();i++)
	 b[s2.size()-1-i]=s2[i]-48;
	int l=max(s1.size(),s2.size());
	for(i=0;i<l;i++)
	 c[i]=a[i]+b[i];
	for(i=0;i<l;i++)
	 if(c[i]>9){
	 	c[i]-=10;
	 	c[i+1]++;
	 }
	if(c[l]==0)
	 l--;
	for(i=l-1;i>=0;i--)
	 ans=ans+char(c[i]+48);
	return ans;
}
string int_to_str(short int n){
	string ans;
	if(n>9)
	 ans=char(n/10+48)+char(n%10+48);
	else
	 ans=char(n+48);
	return ans;
}
int main(){
	short int i,j,n;
	string num,ans;
	cin>>n;
	for(i=1;i<=n;i++){
		for(j=1;j<=i;j++)
		 num=multiplication(num,int_to_str(j));
		ans=addition(ans,num);
	}
	cout<<ans;
	return 0;
}
2024/8/31 22:02
加载中...