求助啊
查看原帖
求助啊
1058676
LRX1029楼主2024/3/31 21:29
#include<stdio.h>
#include<iostream>
using namespace std;
long long n,a[90][90],b[90],sum[90],m,s;
int main(){
	scanf("%lld",&n);
	a[1][0]=1,a[1][1]=1;
	for(int i=2;i<=n;i++){
		b[1]=i%10;
		if(i>=10){
			b[0]=2;
			b[2]=i/10;
		}else{
			b[0]=1;
		}
		for(int j=1;j<=b[0];j++){
			s=0;
			for(int k=1;k<=a[i-1][0];k++){
				m=a[i-1][k]*b[j]+s;
				if(m>9){
					s=m/10;
					m%=10;
				}else{
					s=0;
				} 
				a[i][k+j-1]=m;
				a[i][0]++;
			}
			if(s){
				a[i][0]++;
				a[i][a[i][0]]=s;
			}
		}
	}
	for(int i=1;i<=n;i++){
		s=0;
		for(int j=1;j<=a[i][0];j++){
			m=a[i][j]+sum[j]+s;
			if(m>9){
				m-=10;
				s=1;
			}else{
				s=0;
			}
			if(sum[j]==0){
				sum[0]++;
			}
			sum[j]=m;
		}
		if(s){
			sum[0]++;
			sum[sum[0]]=1;
		}
	} 
	s=0;
	for(int i=sum[0];i>=1;i--){
		if(s){
			printf("%lld",sum[i]);
		}else if(sum[i]!=0){
			printf("%lld",sum[i]);
			s=1;	
		}
	}
	return 0;
}
2024/3/31 21:29
加载中...