很久之前做的题目了。还是很有意思的。
int x[2000000];
int y[100005];
int num[2000000];
int main(){
int n;
cin>>n;
if(n==1){
cout<<1<<endl;
return 0;
}
num[1]=1;
for(int i=2;i<=2000000;++i){
num[i]++;
for(int j=i;j<=2000000;j+=i){
num[j]++;
}
}
x[1]=1;x[2]=1;
int i;
for(i=3;;++i){
int s=num[i];
x[i]=x[i-s]+1;
if(x[i]==n)
break;
}
for(int k=n;k>=1;--k){
int s=num[i];
y[k]=s;
i-=s;
}
for(int i=1;i<n;++i)
cout<<y[i]<<" ";
cout<<y[n]<<endl;
return 0;
}