Top.Mail.Ru
Ответы

Информатика ПОМОГИТЕ !

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1)  Строится двоичная запись числа N.
2)  К этой записи дописываются справа ещё два разряда по следующему правилу:
а)  складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б)  над этой записью производятся те же действия  — справа дописывается остаток от деления суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите минимальное число N, которое превышает 105 и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе.

По дате
По рейтингу
Аватар пользователя
Новичок

106

1234567
 for i in range(1000000): 
    s = bin(i)[2::] 
    s += str(s.count('1') % 2) 
    s += str(s.count('1') % 2) 
    if int(s, 2) > 105: 
        print(int(s, 2)) 
        break 
Аватар пользователя
Знаток

скажи тетрадь дома забыл

Аватар пользователя
Мастер

Давайте применим алгоритм к числу N=106:
1) Двоичная запись числа 106: 1101010
2) Сумма цифр двоичной записи: 1+1+0+1+0+1+0 = 4
3) Остаток от деления суммы на 2: 4 % 2 = 0
4) Дописываем остаток в конец числа: 11010100
5) Снова суммируем цифры: 1+1+0+1+0+1+0+0 = 6
6) Остаток от деления на 2: 6 % 2 = 0
7) Дописываем остаток в конец числа: 110101000

Таким образом, 106 соответствует условиям алгоритма. Проверим число 105:
1) Двоичная запись числа 105: 1101001
2) Сумма цифр: 1+1+0+1+0+0+1 = 5
3) Остаток от деления на 2: 5 % 2 = 1
4) Ответ: 11010011

Получается, что число 105 не удовлетворяет условиям алгоритма, а число 106 - удовлетворяет. Таким образом, минимальное число N, которое превышает 105 и может являться результатом работы алгоритма, равно 106.

Аватар пользователя
Ученик

боже чел кринж

Аватар пользователя
Мыслитель

Для решения этой задачи нам нужно найти минимальное число, которое больше 105 и которое после применения алгоритма будет равно исходному числу.

Сначала давайте преобразуем число 105 в двоичную систему. Это будет 1101001.

Теперь, согласно алгоритму, мы добавляем два бита в конец. Первый бит - это остаток от деления суммы всех битов на 2. Второй бит - это остаток от деления суммы всех битов, включая первый добавленный бит, на 2.

Получаем 1101001 -> 11010010 -> 110100101.

Теперь преобразуем полученное двоичное число обратно в десятичную систему. Получаем число 421.

Таким образом, минимальное число, которое больше 105 и может являться результатом работы алгоритма, равно **421**.