Article From:https://www.cnblogs.com/ttttttttrx/p/9906579.html

Give a set of 1-n, a number of all the numbers in the GCD set, and then choose to delete a number by oneself. Make the dictionary order of the sequence of the number formed by the number maximum.

Idea: All the numbers of GCD must be less than the smallest number in the array, so at first they are all 1. So delete 1 first, then make all the numbers of GCD possible to get 2 quickly.

How to speed up to 2 is to delete all odd numbers, and the smallest remaining number is 2, which is 24,6810…. Delete from 2 at this point.

x ,2x,3x  Only by deleting x 2 x 3 x can the dictionary order x, x, 3x be processed.

（Looks like a lot of people have passed, but they can’t without looking at the problem solving. Mathematics has been forgotten. It’s too good to eat TAT.

```#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int cnt=1;
while(n){
if(n==3){
printf("%d %d %d",cnt,cnt,cnt*3);
break;
}
for(int i=1;i<=n/2+n%2;i++){
printf("%d ",cnt);
}
cnt*=2;
n/=2;
}
return 0;
}
```