Задание 5. Информатика. ЕГЭ. Поляков-7
- Просмотры: 74
- Изменено: 23 ноября 2024
На вход алгоритма подаётся натуральное число \(N\). Алгоритм строит по нему новое число \(R\) следующим образом.
- Строится двоичная запись числа \(N\).
- К этой записи дописываются ещё два разряда по следующему правилу:
a) складываются все цифры двоичной записи, и остаток от деления суммы на \(2\) дописывается в конец числа (справа). Например, запись \(11100\) преобразуется в запись \(111001\);
б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на \(2\).
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа \(N\)) является двоичной записью искомого числа \(R\). Укажите такое наименьшее число \(N\), для которого результат работы алгоритма больше \(125\). В ответе это число запишите в десятичной системе счисления.
Решение:
C++
#include<iostream>
using namespace std;
unsigned int R(unsigned int N) {
for (int i = 0; i < 2; i++) {
unsigned int N1 = N, s = 0;
while (N1) {
s += N1 & 1;
N1 >>= 1;
}
N = (N << 1) + s % 2;
}
return N;
}
int32_t main() {
for (unsigned int N = 1; N < 1000; N++)
if (R(N) > 125) {
cout << N << endl;
break;
}
}
Ответ: \(31\)