Найти тему

Разбор номера 17370 ЕГЭ по информатике #5

Оглавление

Условие: 17370 Досрочная волна 2024 (Уровень: Базовый)
Статья подготовлена командой itpy, подписывайтесь на наш телеграм канал!

Автомат обрабатывает натуральное число N по следующему алгоритму:

1.  Строится двоичная запись числа N.

2.  Удаляется первая слева единица и все следующие непосредственно за ней нули. Если после этого в числе не остаётся цифр, результат этого действия считается равным нулю.

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

4.  Новое число вычитается из исходного, полученная разность выводится на экран.

Сколько разных значений будет показано на экране автомата при последовательном вводе всех натуральных чисел от 100 до 3000?

Вариант 1: решение через строки
Вариант 1: решение через строки
# Код решения Вариант 1
A = set()
for n in range(100, 3000+1):
s = bin(n)[3:]
s = int(s, 2)
r = n - s
A.add(r)
print(len(A))

Комментарии к первому варианту решения задачи:

  1. создаем множество set() A , в которое будем добавлять разность нового числа и исходного
  2. делаем перебор от 100 до 3000 (как сказано в условии)
  3. переводим число в двоичную систему и делаем срез от 3 цифры, т.к. нам нужно удалить первую единицу слева
  4. переводим наше число в десятичную систему
  5. находим разность нового числа и исходного
  6. добавляем во множество set() разность
  7. и выводим длину A

Вариант 2: похоже на первое, но через список
Вариант 2: похоже на первое, но через список
# Код решения Вариант 2
A = []
for n in range(100, 3001):
s = bin(n)[3:]
s = int(s, 2)
if n - s not in A:
A.append(n - s)
print(len(A))

Комментарии ко второму варианту решения задачи:

  1. создаем список A , в который будем добавлять разность нового числа и исходного
  2. делаем перебор от 100 до 3000 (как сказано в условии)
  3. переводим число в двоичную систему и делаем срез от 3 цифры, т.к. нам нужно удалить первую единицу слева
  4. переводим наше число в десятичную систему

5-6. если такой разности в списке нет, то добавляем в список. Это нужно для того, чтобы не было одинаковых чисел

7. выводим длину списка A

Ответ: 6

Читайте нас в телеграмме:

Информатика ЕГЭ | itpy 👨‍💻

Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy
Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy