90分求助
  • 板块P1249 最大乘积
  • 楼主Arthi
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/23 16:24
  • 上次更新2024/3/23 18:15:46
查看原帖
90分求助
681514
Arthi楼主2024/3/23 16:24
using namespace std;

int a[100000]={};
int l=1;
int main(){
	a[0]=1;
	int n,m;
	cin>>n;
    if(n==3){
        cout<<3<<endl;
        cout<<3;return 0;
    }else if(n==4){
        cout<<4<<endl;
        cout<<4;return 0;
    }
	int i=2;
	while(1){
		if((i-1)*(i+2)/2>=n){
			m=i-1;break;
		}
		i++;
	}
	i--;
	//cout<<m<<endl;
	int lea=n-((i-1)*(i+2)/2);
	//cout<<lea<<endl;
	int p=m-lea;
	for(int i=2; i<=p; i++)cout<<i<<" ";
	for(int i=p+2; i<=m+1; i++)cout<<i<<" ";
    cout<<endl;
	for(int i=2; i<=p; i++){
		for(int j=0; j<l; j++){
			a[j]*=i;
		}
		for(int j=0; j<l; j++){
			a[j+1]+=a[j]/10;
			a[j]%=10; 
		}
		while(a[l]){
			l++;
			a[l]+=a[l-1]/10;
			a[l-1]%=10;
		}
		while(a[l-1]==0&&l-1>=1)l--;
	}
	//for(int i=l; i>=0; i--)cout<<a[i];
	//cout<<endl;
	for(int i=p+2; i<=m+1; i++){
		for(int j=0; j<l; j++){
			a[j]*=i;
		}
		for(int j=0; j<l; j++){
			a[j+1]+=a[j]/10;
			a[j]%=10; 
		}
		while(a[l]){
			l++;
			a[l]+=a[l-1]/10;
			a[l-1]%=10;
		}
		while(a[l-1]==0&&l-1>=1)l--;
	}
	for(int i=l-1; i>=0; i--)cout<<a[i];
	return 0;
}
2024/3/23 16:24
加载中...