#include <bits/stdc++.h> using namespace std; int main() { int n,x=0,y=0; cin>>n; vector<int> zapalenia; zapalenia.push_back(0); while(x<n) { y++; int t=y,zapalone=0; while(t) { if(t&1) zapalone++; t/=2; } zapalenia.push_back(zapalone); x+=zapalone; } int nadmiar=x-n; if(nadmiar==0) { cout<<zapalenia.size()-1<<endl; while(y>0) { cout<<y<<" "; y--; } } else { int nie_pisz; for(int i=zapalenia.size()-1;i>0;i--) { if(zapalenia[i]==nadmiar) { nie_pisz=i; break; } } cout<<zapalenia.size()-2<<endl; while(y>0) { if(y!=nie_pisz) cout<<y<<" "; y--; } } 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 main() { int n,x=0,y=0; cin>>n; vector<int> zapalenia; zapalenia.push_back(0); while(x<n) { y++; int t=y,zapalone=0; while(t) { if(t&1) zapalone++; t/=2; } zapalenia.push_back(zapalone); x+=zapalone; } int nadmiar=x-n; if(nadmiar==0) { cout<<zapalenia.size()-1<<endl; while(y>0) { cout<<y<<" "; y--; } } else { int nie_pisz; for(int i=zapalenia.size()-1;i>0;i--) { if(zapalenia[i]==nadmiar) { nie_pisz=i; break; } } cout<<zapalenia.size()-2<<endl; while(y>0) { if(y!=nie_pisz) cout<<y<<" "; y--; } } return 0; } |