Python

Срочно задание 5 ЕГЭ информатика

Автомат обрабатывает десятичное целое число N (0 ≤ N ≤ 255) по следующему алгоритму: 1. Строится восьмибитная двоичная запись числа N. 2. Все разряды двоичной записи инвертируются (0 заменяется на 1, 1 на 0). 3. Если полученное число кратно 5, то в двоичной записи старшие три разряда заменяются на 100, в противном случае в двоичной записи старшие три разряда заменяются на 101. Полученная таким образом запись является двоичной записью искомого числа R. Сколько существует чисел N, из которых в результате выполнения алгоритма может получиться число 180?
Ответы
Для решения задачи, давайте начнем с получения двоичной записи числа 180 и последовательно выполним шаги алгоритма. 1. Двоичная запись числа 180: • 180₁₀ = 10110100₂ . 2. Инвертируем все разряды: • Инвертируем 10110100₂ : • Получаем 01001011₂ . 3. Проверяем кратность 5: • Переведем 01001011₂ в десятичную систему: 0 ⋅ 2⁷ + 1 ⋅ 2⁶ + 0 ⋅ 2⁵ + 0 ⋅ 2⁴ + 1 ⋅ 2³ + 0 ⋅ 2² + 1 ⋅ 2¹ + 1 ⋅ 2⁰ = 0 + 64 + 0 + 0 + 8 + 0 + 2 + 1 = 75 • Проверим, кратно ли 75 числу 5: • 75 ÷ 5 = 15 (кратно). 4. Заменяем старшие три разряда: • Так как число кратно 5, заменяем старшие три разряда на 100 : • Получаем 10001011₂ . Теперь мы знаем, что искомое число R = 10001011₂ . Теперь нам нужно найти все возможные значения N , которые могут привести к этому результату. ▎Обратный процесс: 1. Инвертируем старшие три разряда: • У нас есть R = 10001011₂ . • Инвертируем старшие три разряда: • Получаем 00001011₂ . 2. Преобразуем обратно в десятичное число: • 00001011₂ = 11₁₀ . 3. Проверяем кратность на этапе инверсии: • Теперь нам нужно проверить, какие значения N могут привести к 11₁₀ (то есть к 00001011₂ ): • Инвертируем все биты: • N = инверсия(00001011₂) = 11110100₂ . 4. Переводим обратно в десятичное: • N = 11110100₂ = 128 + 64 + 32 + 16 + 0 + 0 + 4 + 0 = 244₁₀ . Теперь мы имеем одно значение N = 244 . Однако нам нужно проверить, есть ли другие числа, которые могут привести к такому же результату: ▎Проверка других возможных значений: Поскольку шаги инверсии и замены старших разрядов могут быть выполнены для разных значений, нам нужно найти все N , такие что после инверсии и проверки на кратность также получится кратное число. Значения от N = 0 до N = 255 могут быть проверены на кратность и инверсию, однако из-за ограничений по количеству битов (всего восемь бит), мы можем заметить, что только одно значение N = 244 приведет к искомому результату. ▎Ответ: Таким образом, существует только одно число N , из которого в результате выполнения алгоритма может получиться число 180.
Ты обратилась не по адресу,сори.
180₁₀ = 10110100₂ => 101|10100 => искомое число после инвертирования должно быть не кратно 5. Три левых разряда образуют 8 возможных вариантов и только для 2 вариантов (000 и 101) число будет кратно 5. Ответ: 6 Все искомые числа после инвертирования равны 20 + x * 32, где x ∈ [0; 7]. Очевидно, что такое число будет кратно 5, только если x кратно 5. Т.е. если x = 0 или x = 5. Собственно, это самое инвертирование вообще не нужно, т.к. множество чисел после инвертирования в точности совпадает с множеством чисел до инвертирования. И если хочешь кодом, то:
 cnt = 0 
for i in range(256): 
  if i % 5 == 0: continue 
  cnt += int('101' + ('0000' + bin(i)[2:])[-5:], 2) == 180 
print(cnt) 
Или даже так:
 cnt = 0  
for i in range(256):
  cnt += i % 5 != 0 and i % 32 == 20
print(cnt) 
спасибо,но можете пожалуйста через питон решить
Виктория Струкова, Добавил в основной ответ
спасибо вам большое
Не, это сложно. Я в базе....
чтобы получить 180 нужно сначала инвертировать 180 до 01101100 потом обратно до 10000011 это 131 а 131 кратно 5 значит 3 старших бита 100 так что всего 4 числа подходят
это мы не проходили