c++求助 75
查看原帖
c++求助 75
921267
oymz楼主2023/10/30 20:49
#include<bits/stdc++.h>
using namespace std;
int n,lenk=1,lenr=1,lenans=1,lensum=1;
int res[50000];
int ans[50000];
int sum[50000];
int k[50000];
int main(){
	cin>>n;
	ans[1]=1;
	for(int i=1;i<=n;i++){
		fill(sum+1,sum+50000,0);
		int q=i;
		lenk=0;
		while(q){
			k[++lenk]=q%10;
			q/=10;
		}
		for(int j=1;j<=lenans;j++){
			for(int l=1;l<=lenk;l++){
				sum[l+j-1]+=k[l]*ans[j];
			}
		}
		for(int j=1;j<=lensum;j++){
			sum[j+1]+=sum[j]/10;
			sum[j]%=10;
		}
		while(sum[lensum])lensum++;
		lenr=max(lenr,lensum);
		int kkksc03=lenans;
		lenans=lensum;
		for(int j=1;j<=lensum;j++)ans[j]=sum[j];
		fill(sum+1,sum+lensum+1,0);
		lensum=kkksc03+lenk;
		
		for(int j=1;j<=lenr;j++){
			res[j]+=ans[j];
			res[j+1]+=res[j]/10;
			res[j]%=10;
		}
	}
	while(!res[lenr]&&lenr>1)lenr--;
	for(int i=lenr;i>=1;i--)cout<<res[i];
	return 0;
}
2023/10/30 20:49
加载中...