#include <bits/stdc++.h> using namespace std; int n; vector<pair<int,int>> ciag; /*int sumabit(int a){ int wynik=0; while(a>0){ if(a%2==0){ a/=2; } else{ wynik++; a/=2; } } return wynik; }*/ int sumabit(int liczba){ int wynik=0; while(liczba!=0){ wynik+=liczba & 1; liczba=liczba>>1; } return wynik; } /*int sumasum(vector<pair<int, int>> x){ int wynik=0; for(pair<int,int> a: x){ wynik+=a.second; } return wynik; }*/ int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; //ciag.push_back(4); int sumaciag=0; for(int i=1; true; i++){ ciag.push_back({i, sumabit(i)}); sumaciag+=ciag[i-1].second; if(sumaciag>=n) break; } //cout<<sumasum(ciag)<<"\n"; //for(auto a: ciag) cout<<a.first<<" "; //cout<<"\n"; //cout<<sumasum(ciag)<<" "<<sumaciag<<"\n"; if(sumaciag==n){ int csiz=ciag.size(); cout<<csiz<<"\n"; for(int i=csiz-1; i>=0; i--) cout<<ciag[i].first<<" "; }else{ //cout<<"TEST"; int csiz=ciag.size(), delta=sumaciag-n; for(int i=csiz-1; true; i--){ //cout<<ciag.at(i)<<" "; if(ciag[i].second==delta){ ciag.erase(ciag.begin()+i); break; } } csiz=ciag.size(); cout<<csiz<<"\n"; for(int i=csiz-1; i>=0; i--) cout<<ciag[i].first<<" "; } //cout<<"\n"<<sumasum(ciag); }
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #include <bits/stdc++.h> using namespace std; int n; vector<pair<int,int>> ciag; /*int sumabit(int a){ int wynik=0; while(a>0){ if(a%2==0){ a/=2; } else{ wynik++; a/=2; } } return wynik; }*/ int sumabit(int liczba){ int wynik=0; while(liczba!=0){ wynik+=liczba & 1; liczba=liczba>>1; } return wynik; } /*int sumasum(vector<pair<int, int>> x){ int wynik=0; for(pair<int,int> a: x){ wynik+=a.second; } return wynik; }*/ int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; //ciag.push_back(4); int sumaciag=0; for(int i=1; true; i++){ ciag.push_back({i, sumabit(i)}); sumaciag+=ciag[i-1].second; if(sumaciag>=n) break; } //cout<<sumasum(ciag)<<"\n"; //for(auto a: ciag) cout<<a.first<<" "; //cout<<"\n"; //cout<<sumasum(ciag)<<" "<<sumaciag<<"\n"; if(sumaciag==n){ int csiz=ciag.size(); cout<<csiz<<"\n"; for(int i=csiz-1; i>=0; i--) cout<<ciag[i].first<<" "; }else{ //cout<<"TEST"; int csiz=ciag.size(), delta=sumaciag-n; for(int i=csiz-1; true; i--){ //cout<<ciag.at(i)<<" "; if(ciag[i].second==delta){ ciag.erase(ciag.begin()+i); break; } } csiz=ciag.size(); cout<<csiz<<"\n"; for(int i=csiz-1; i>=0; i--) cout<<ciag[i].first<<" "; } //cout<<"\n"<<sumasum(ciag); } |