#include <bits/stdc++.h> using namespace std; int n, p; int tab[150005]; int main(){ ios_base::sync_with_stdio(0); cin.tie(NULL); cin>>n; long long w=0; for(int i=1; i<200005; i++) { p=i; int pom=1; while(pom<i) { pom*=2; } while(p>0) { if(p>=pom) { p%=pom; w++; tab[i]++; } pom/=2; } p=i; if(w>n) { break; } } int pom=p; for(int i=p; w>n; i--) { if(w-tab[i]>=n) { w-=tab[i]; tab[i]=0; p--; } } cout<<p<<"\n"; for(int i=pom; i>=1; i--) { if(tab[i]>0) { cout<<i<<" "; } } return 0; }
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <bits/stdc++.h> using namespace std; int n, p; int tab[150005]; int main(){ ios_base::sync_with_stdio(0); cin.tie(NULL); cin>>n; long long w=0; for(int i=1; i<200005; i++) { p=i; int pom=1; while(pom<i) { pom*=2; } while(p>0) { if(p>=pom) { p%=pom; w++; tab[i]++; } pom/=2; } p=i; if(w>n) { break; } } int pom=p; for(int i=p; w>n; i--) { if(w-tab[i]>=n) { w-=tab[i]; tab[i]=0; p--; } } cout<<p<<"\n"; for(int i=pom; i>=1; i--) { if(tab[i]>0) { cout<<i<<" "; } } return 0; } |