@[lzj20110120](/user/1139975)
a,b数组开小了!!!(见//!处)
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[200001]; //!
int b[200001]; //!
void print(int n) {
for (int i=n;i>=1;i--) {
cout<<b[i];
}
}
int mul(int c[],int n) {
int len=1;
b[1]=1;
for(int i=1;i<=n;i++) {
for (int j=1;j<=len;j++){
b[j]*=c[i];
}
for (int j=1;j<=len+1;j++){
b[j+1]+=b[j]/10;
b[j]%=10;
}
len+=3;
for(;!b[len];len--){}
}
return len;
}
int main() {
int n,j=1,sum=0;
cin>>n;
if(n==3){
cout<<"1 2"<<endl<<2;
return 0;
}
if(n==4){
cout<<"1 3"<<endl<<3;
return 0;
}
for (int i=2;sum<n;i++,j++) {
a[j]=i;
sum+=i;
}
int gap=sum-n;
if (gap==0){
j--;
cout<<2;
for(int i=2;i<=j;i++) {
cout<<' '<<a[i];
}
cout<<endl;
print(mul(a,j));
}
else if(gap==1) {
j--;
for(int i=2;i<=j;i++) {
a[i-1]=a[i];
}
a[j-1]++;
cout<<a[1];
for(int i=2;i<j;i++) {
cout<<' '<<a[i];
}
cout<<endl;
print(mul(a,j-1));
}
else {
j--;
for(int i=gap-1;i<=j-1;i++){
a[i]=a[i+1];
}
cout<<a[1];
for(int i=2;i<j;i++) {
cout<<' '<<a[i];
}
cout<<endl;
print(mul(a,j-1));
}
return 0;
}
```
by sybnb @ 2024-02-06 16:20:09
@[sybnb](/user/995948) 万分感谢,已关
by lzj20110120 @ 2024-02-09 09:55:01