Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- using namespace std;
- int main(){
- int n; //исходное число
- cin >> n; //вводим его
- int *bin = new int; //динамический массив для хранения двоичных разрядов
- int i = 0; //счетчик
- //нахожу остаток от 2, т.е. получаю двоичное значение
- while(n>0){
- bin[i] = n%2;
- n/=2;
- i++;
- }
- sort(bin, bin+i); //использую эту сортировку, т.к. не охота писать вручную
- int result=0; //выходное значение
- //перевод в десятичную систему
- for(int j=i-1; j>=0; j--){
- result += bin[j]*pow(2,j);
- }
- cout << result; //выводим
- delete [] bin; //удаляем массив
- return 0;
- }
- 1010 -> 0101 -> 1010
- #include <iostream>
- #include <iomanip>
- using namespace std;
- int main(int argc, const char * argv[])
- {
- unsigned int N, n, max = 0;
- cin >> N;
- int size = 0;
- n = N;
- while(n) { ++size; n >>= 1; }
- max = n = N;
- for(int i = 0; i < size; ++i)
- {
- n = n>>1 | ((n&1) << (size-1));
- if (max < n) max = n;
- }
- cout << max;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement