Top.Mail.Ru
Ответы
Аватар пользователя
7 месяцев назад
от

ПРОГРАММИРОВАНИЕ ПИТОН 11 КЛАСС (ПОПРОЩЕ ПЖ)

Автомат обрабатывает натуральное девятиразрядное число N по следующему алгоритму:
1. Находится сумма разрядов числа N.
2. Полученное число переводится в двоичную систему счисления.
3. К записи, полученной на предыдущем этапе, дописываются разряды по следующему правилу:
a) Если количество единиц четное дописывается единица слева и два нуля справа,
b) Если количество единиц нечетное дописывается 10 слева и 1 справа.
Полученная таким образом запись является двоичной записью искомого числа R.
Пример. Дано число N = 123456789. Алгоритм работает следующим образом:
1. Сумма разрядов 45.
2. Двоичная запись 101101.
3. Единиц четное количество, следовательно, получаем 1+101101+00 = 110110100.
4. 1101101002 = 436.
Сколько существует чисел N, для которых результат работы автомата равен 21?

Задание 4
На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Полученная запись переворачивается (записывается слева направо).
3. В полученной записи дублируется младший (правый) бит.
Полученная таким образом запись (в ней на один разряд больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Например, для числа 11 алгоритм будет выполняться следующим образом:
1. 11 = 10112.
2. 11012.
3. 110112 = 2710
Укажите минимальное число N в результате обработки которого получится число, большее 99. В ответе запишите это число в десятичной системе.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
7мес

Первая задача

1234567891011121314151617181920
 def sum_of_digits(n): 
    return sum(int(digit) for digit in str(n)) 
 
def process_number_task1(N): 
     #Перемеренные
    digit_sum = sum_of_digits(N) 
    binary_sum = bin(digit_sum)[2:] 
    ones_count = binary_sum.count('1') 
    ####
    if ones_count % 2 == 0: 
        R_binary = '1' + binary_sum + '00' 
    else: 
        R_binary = '10' + binary_sum + '1' 
     
    R = int(R_binary, 2) 
    return R 
#Получение данных
N = int(input("Введите число N для первой задачи: ")) 
result_task1 = process_number_task1(N) 
print(f"Результат для первой задачи: {result_task1}")  

Вторая задача

1234567891011
 def process_number_task2(N): 
    binary_N = bin(N)[2:] 
    reversed_binary_N = binary_N[::-1] 
    R_binary = reversed_binary_N + reversed_binary_N[-1] 
    R = int(R_binary, 2) 
    return R 
 
N = int(input("Введите число N для второй задачи: ")) 
result_task2 = process_number_task2(N) 
print(f"Результат для второй задачи: {result_task2}") 
 



Рекомендую самому проверить верно ли всё,это решение от Chat gpt 4o,немного улучшенное

Аватар пользователя
Искусственный Интеллект
7мес

bin(21)='0b10101'
a) Если количество единиц четное дописывается единица слева и два нуля справа,
b) Если количество единиц нечетное дописывается 10 слева и 1 справа.
Двух нулей справа нет. То есть исх нечётное кол-во единиц. Одна, то есть (убрать 10 слева 1 справа), сумма цифр =10b = 2dec
Задача свелась к поиску среди 9ти значных чисел с суммой цифр = 2.
Девятизначное == первое не нуль и ещё 8 цифр. Т.о первое - 2 и 8 нулей или первое 1 и 8 мест для второй единицы. Ответ - 9 штук.
______________________
4)
В двоичной записи числа N первый бит всегда 1, следовательно, в перевёрнутой записи два последних бита = 11
bin(99) ='0b1100011' при N=35= '0b100011'
т.о. искать N< 35, такое, чтобы при работе алгоритма получилось R> 99

12345
 for i in range(1,36): 
    R=bin(i)[2:] 
    R=R[::-1]+'1' 
    print(int(R,2),R,i) 
     
Аватар пользователя
Знаток
7мес

в шаблон закинь
for n in range(1000):
n2 = bin(n)[2:] //перевод в 2-сис
if n2 % 2 == 0: //проверка на четность
Мне впадлу