SUBTASK 1求助
查看原帖
SUBTASK 1求助
1192776
Im_Joker楼主2024/7/9 09:53
#include<bits/stdc++.h>
using namespace std;
int a[10001];
int c[1001]={0};
void cheng(int &x){
	int g=0;
	for(int i=1000;i>=0;i--){
		c[i]*=x;
		c[i]+=g;
		g=c[i]/10;
		c[i]%=10;
	}
}
int main() {
    int n;
    cin>>n;
    if(n<=4){
		cout<<n<<endl<<n;
		return 0;
	}
    c[1000]=1;
    int q=2,sum=0,z=0;
    while(sum<n){
		sum+=q;
		a[z]=q;
		q++;
		z++;
	}
	int zz=z;
	z=0;
	int f;
	if(sum-n==1){
		z=1;      //高精乘时舍去2
	}else if(sum-n>1){
		for(int i=0;i<zz;i++){
			if(a[i]==sum-n){
				f=i;
				break;       //用f做好标记		
			}
		}
	}
	int zzz=z;
	//高精乘
	for(;z<zz;z++){
		if(z!=f){
			cout<<a[z]<<" ";
		}
	}
	for(int i=zzz;i<zz;i++){
		if(i!=f){
			cheng(a[i]);
		}
	}
	cout<<endl;
	int w;
	bool flag=true;  //非0则false
	for(int i=0;i<=1000;i++){
		if(c[i]!=0){
			flag=false;     //两种操作(找最大数位、判断为0)同时进行
			w=i;
			break;
		}
	}
	if(flag){
		cout<<0;
		return 0;
	}else{
		for(;w<=1000;w++){
			cout<<c[w];
		}
	}
	return 0;
}
2024/7/9 09:53
加载中...