Предмет: Информатика,
автор: kam6667128
Помогите решить задачу на с++.Даю сто баллов условие закреплено
Приложения:
Ответы
Автор ответа:
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?
а зачем без, когда можно с?
можно, конечно, создавать обычный массив размера int(log_2{n}) и добавлять биты в него в цикле, но это кринж.
Да и как Страуструп завещал, лучше всегда использовать векторы, а не обычные массивы
Да и как Страуструп завещал, лучше всегда использовать векторы, а не обычные массивы
Мы векторы не проходили ещё
отличный повод заняться самообразованием)
:)
ну или можешь заменить вектор на строку и делать str += (n % 2) + '0' вместо bits.push_back(n % 2) и так далее
Ок, спасибо
Похожие вопросы
Предмет: Русский язык,
автор: Аноним
Предмет: Русский язык,
автор: катюша479
Предмет: Английский язык,
автор: KalinkaK
Предмет: Русский язык,
автор: 3646193
Предмет: Математика,
автор: 20zhukova05