1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <bits/stdc++.h>
using namespace std;
int n,tab[1000007],it,res,m;
int main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        tab[i]=__builtin_popcount(i);
        res+=tab[i];
        m++;
        if(res>n){
            for(int j=i;j>0;j--){
                if(res-tab[j]>=n){
                    res-=tab[j];
                    tab[j]=0;
                    m--;
                }
                if(res==n)
                    break;
            }
        }
        if(res==n){
            it=i;
            break;
        }
        }
        cout<<m<<'\n';
        for(int i=it;i>0;i--){
            if(tab[i]!=0){
                cout<<i<<" ";
            }
        }

}