#include <iostream> #include <vector> using namespace std; const int SIZE=1e6+10; int tab[SIZE]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,p=2,sum=1,i; vector<int> v; cin>>n; tab[0]=0; tab[1]=1; for(i=2;sum<n;i++){ if(p*2==i){ p*=2; } tab[i]=tab[i-p]+1; sum+=tab[i]; } for(;i>0;i--){ if(sum-tab[i]>=n){ sum-=tab[i]; } else v.push_back(i); } cout<<v.size()<<"\n"; for(int j=0;j<v.size();j++) cout<<v[j]<<" "; 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 | #include <iostream> #include <vector> using namespace std; const int SIZE=1e6+10; int tab[SIZE]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,p=2,sum=1,i; vector<int> v; cin>>n; tab[0]=0; tab[1]=1; for(i=2;sum<n;i++){ if(p*2==i){ p*=2; } tab[i]=tab[i-p]+1; sum+=tab[i]; } for(;i>0;i--){ if(sum-tab[i]>=n){ sum-=tab[i]; } else v.push_back(i); } cout<<v.size()<<"\n"; for(int j=0;j<v.size();j++) cout<<v[j]<<" "; return 0; } |