#include
#include
#include
using namespace std;
class numeric
{
public:
int n, n0;
bool Prt;
numeric() {};
~numeric() {};
void InputData()
{
do
{
cout << "Введите ПОЛОЖИТЕЛЬНОЕ число = "; cin >> n;
}while (n>536870912 && n>-1);
Prt= 0; n0= n;
}
void CheckParity()
{
int mask= 536870912;
int nn=0, cnt=0;
do
{
if (n & mask) { cnt++; if (!nn) nn= mask; }
mask = mask >> 1;
}while (mask);
cout << "cnt= " << cnt << endl;
cout << "nn= " << nn << endl;
if (cnt%2) { nn= nn << 1; n+= nn; n= n&4294967292; n+= 1; }
else { nn= nn << 2; n+= nn; n= n&4294967292; n+= 3; Prt= 1; }
}
void OutData()
{
cout << "Получено число " << n0 << endl;
cout << "Флаг чётности единиц(1) \ не чётности единиц(0) " << Prt << endl;
cout << "результат = " << n;
}
protected:
private:
};
int main(int argc, char **argv)
{
system("chcp 1251 > nul"); // Руссификация сообщений
setlocale(LC_ALL, "Russian");
numeric nmr; nmr.InputData(); nmr.CheckParity(); nmr.OutData();
cout << endl << "Хелло Ворлд" << endl;
system("pause"); // system("pause > nul");
return 0;
}
#include
using namespace std;
constexpr int ones(int n) {
int res = 0;
while (n) {
res++;
n &= n - 1;
}
return res;
}
constexpr int bits(int n) {
int res = 0;
while (n) {
res++;
n /= 2;
}
return res;
}
int main() {
int n;
cin >> n;
int r = ones(n) % 2 == 0 ? ((1 << (bits(n) + 1)) | n) | 3
: (((1 << (bits(n))) | n) | 3) ^ 2;
cout << r << endl;
return 0;
}
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
a. если сумма цифр в двоичной записи числа четная, то к этой записи слева дописывается 10, а затем два правых разряда заменяются на 11
b. если сумма цифр в двоичной записи числа нечетная, то к этой записи слева дописывается 1, а затем два правых разряда заменяются на 01.
Например, двоичная запись 111 числа 7 будет преобразована в 1101, а двоичная запись 101 числа 5 будет преобразована в 10111. Полученная таким образом запись является двоичной записью числа R — результата работы данной программы.
В поле ответа укажите число R, которое получится в результате обработки числа N, равного 76. В ответе это число запишите в десятичной системе счисления.