0pts求调
查看原帖
0pts求调
1109619
M1__楼主2025/1/22 15:23

求调


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

string hightime(string s1,string s2){
	int a[100010],b[100010],c[100010];
	int lens1=s1.size();
	int lens2=s2.size();
	for(int i=1;i<=lens1;i++){
		a[i]=s1[lens1-i]-'0';
	}
	for(int i=1;i<=lens2;i++){
		b[i]=s2[lens2-i]-'0';
	}
	for(int i=1;i<=lens1;i++){
		for(int j=1;j<=lens2;j++){
			c[i+j-1]+=a[i]*b[j];
		}
	}
	int len=lens1+lens2;
	
	for(int i=1;i<len;i++){
		if(c[i]>9){
			c[i+1]+=c[i]/10;
			c[i]%=10;
		}
	}
	
	while(c[len]==0&&len>1){
		len--;
	}
	string t="";
	for(int i=len;i>=1;i--){
		t+=char(c[i]+'0');
	}
	return t;
}

string highplus(string s3,string s4){
	int a1[10010]={0},b1[10010]={0},c1[10010]={0};
	for(int i=0;i<s3.size();i++){
		a1[s3.size()-i-1]=s3[i]-'0';
	}
	for(int i=0;i<s4.size();i++){
		b1[s4.size()-i-1]=s4[i]-'0';
	}
	int llen=max(s3.size(),s4.size());
	for(int i=0;i<llen;i++){
		c1[i]=a1[i]+b1[i];
	}
	for(int i=0;i<llen;i++){
		if(c1[i]>=10){
			c1[i+1]=c1[i+1]+1;
			c1[i]=c1[i]%10;
		}
	}
	if(c1[llen]!=0){
		llen++;
	}
	string t="";
	for(int i=llen-1;i>=0;i--){
		t+=char(c1[i]+'0');
	}
	return t;
}
int main(){
	ll n;
	cin>>n;
	string a="1",sum="";
	for(int i=1;i<=n;i++){
		string temp=to_string(i);
		a=hightime(a,temp);
		sum=highplus(sum,a);
	}
	cout<<sum;
	return 0;
}
2025/1/22 15:23
加载中...