На вход алгоритма подаётся натуральное число \(N\). Алгоритм строит по нему новое число \(R\) следующим образом.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа \(N\)) является двоичной записью искомого числа \(R\). Укажите такое наименьшее число \(R\), которое превышает \(43\) и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе счисления.
Решение:
C++
#include<iostream>
using namespace std;
unsigned int sum_digits(unsigned int N) {
unsigned int sum = 0;
while (N)
{
sum += N & 1;
N >>= 1;
}
return sum;
}
unsigned int R(unsigned int N) {
for (int i = 0; i < 2; i++)
N = (N << 1) + sum_digits(N) % 2;
return N;
}
int32_t main() {
unsigned int Rmin = 10000;
for (unsigned int N = 1; N < 1000; N++) {
unsigned int ans;
ans = R(N);
if (ans > 43 && ans < Rmin) Rmin = ans;
}
cout << Rmin << '\n';
}
Ответ: \(46\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене