Информатика, вопрос задал kam6667128 , 6 лет назад

Помогите решить задачу на с++.Даю сто баллов условие закреплено

Приложения:

Ответы на вопрос

Ответил stglupa
0

#include <iostream>

#include <vector>

#include <cmath>

using namespace std;

void solve(){

   int n, k = 0;

   cin >> n;

   vector<int> bits;

   while(n > 0){

       bits.push_back(n % 2);

       n /= 2;

   }

   for(int i = 0; i < bits.size(); i++)

       k += (1 - bits[i]) * pow(2, i);

   cout << k;

}

int main(){

   solve();

}


kam6667128: А можно как то без bits.push_back?
stglupa: а зачем без, когда можно с?
stglupa: можно, конечно, создавать обычный массив размера int(log_2{n}) и добавлять биты в него в цикле, но это кринж.
Да и как Страуструп завещал, лучше всегда использовать векторы, а не обычные массивы
kam6667128: Мы векторы не проходили ещё
stglupa: отличный повод заняться самообразованием)
kam6667128: :)
stglupa: ну или можешь заменить вектор на строку и делать str += (n % 2) + '0' вместо bits.push_back(n % 2) и так далее
kam6667128: Ок, спасибо
Новые вопросы