Решение задачи "Бит-реверс " с Acmp

С пояснением   Просмотров: 9


Целое положительное число m записывается в двоичной системе счисления, разряды (в этой записи) переставляются в обратном порядке и число переводится в десятичную систему счисления. Получившееся число принимается за значение функции B(m).

Требуется написать программу, которая для заданного m вычислит B(m).

Код

#include <bits/stdc++.h>

using namespace std;


int main()
{
    int n, k = 0,  s = 0;
    cin >> n;
    vector<int> a;
    vector<int> res;
    while(n >= 2){
        a.push_back(n % 2);
        n/=2;
    }
    if(n)
        a.push_back(n);

    for(int i = 0; i < a.size(); ++i){
        res.push_back(pow(2, i));
    }
    reverse(res.begin(), res.end());
    for(int i = 0; i < a.size(); ++i){
        if(a[i])
            s+=res[i];
    }
    cout << s;
    return 0;
}

         

 Администратор Photo Автор: Администратор


Так выглядит массив A: 1, 2, 4, 8, 16, 32....... , т.е в ней содержатся степени двойки, начиная с нуля.

Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться