#include <bits/stdc++.h> int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0); //bool flag=false; long long int aktualna = 0; int k; int potegi; int mersenne=0; std::vector<long long int> inne; int i; std::vector<long long int> zakonczenie; std::cin>>k; potegi = k; i = 2; while (potegi>i) { potegi -= i; mersenne++; i++; } while (mersenne>2) { //std::cout << mersenne; //flag=false; aktualna = mersenne+1; mersenne--; potegi += aktualna-2; while (aktualna>=64) { aktualna--; } while (std::find(inne.begin(), inne.end(), aktualna)== inne.end() && aktualna>2) { aktualna--; //std::cout << aktualna << "\n"; //flag=true; } inne.push_back(aktualna); } for (i=0; i<inne.size(); ++i) { zakonczenie.push_back(pow(2, inne[i])+1); } for (i=1; i<=mersenne; ++i) { zakonczenie.push_back(pow(2, i+1)-1); } for (i=0; i<potegi; ++i) { zakonczenie.push_back(pow(2, i)); } std::sort(zakonczenie.begin(), zakonczenie.end()); std::cout << zakonczenie.size() << "\n" << zakonczenie[zakonczenie.size()-1]; for (i=zakonczenie.size()-1; i>0; i--) { std::cout << ' ' << zakonczenie[i-1]; } }
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 | #include <bits/stdc++.h> int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0); //bool flag=false; long long int aktualna = 0; int k; int potegi; int mersenne=0; std::vector<long long int> inne; int i; std::vector<long long int> zakonczenie; std::cin>>k; potegi = k; i = 2; while (potegi>i) { potegi -= i; mersenne++; i++; } while (mersenne>2) { //std::cout << mersenne; //flag=false; aktualna = mersenne+1; mersenne--; potegi += aktualna-2; while (aktualna>=64) { aktualna--; } while (std::find(inne.begin(), inne.end(), aktualna)== inne.end() && aktualna>2) { aktualna--; //std::cout << aktualna << "\n"; //flag=true; } inne.push_back(aktualna); } for (i=0; i<inne.size(); ++i) { zakonczenie.push_back(pow(2, inne[i])+1); } for (i=1; i<=mersenne; ++i) { zakonczenie.push_back(pow(2, i+1)-1); } for (i=0; i<potegi; ++i) { zakonczenie.push_back(pow(2, i)); } std::sort(zakonczenie.begin(), zakonczenie.end()); std::cout << zakonczenie.size() << "\n" << zakonczenie[zakonczenie.size()-1]; for (i=zakonczenie.size()-1; i>0; i--) { std::cout << ' ' << zakonczenie[i-1]; } } |