Логотип сайта

Подготовка к ЕГЭ и ОГЭ

  • Главная
  • Информация о сайте
  • Сочинения ЕГЭ
  • Выпускное сочинение
  • Поиск по сайту

На вход алгоритма подаётся натуральное число N. Алгоритм...

Категория: Информатика и ИКТ

Задание:

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:

a. если число N делится на 3, то к этой записи дописываются три последние двоичные цифры;

b. если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа. Полученная таким образом запись является двоичной записью искомого числа R.

3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 12 = 11002 результатом является число 11001002 = 100, а для исходного числа 4 = 1002 это число 100112 = 19.

Укажите минимальное число R, большее 151, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.

Решение (аналитическое):

Пункт 2 имеет три возможных исхода:

1) Число делится на 3 – к числу дописывает три последние разряда
2) Число при делении на 3 дает остаток 1 – к числу дописывается двоичная запись 3 = 112 (два разряда)
3) Число при делении на 3 дает остаток 2 – к числу дописывается двоичная запись 6 = 1102 (три разряда)

Минимальное число, удовлетворяющее в качестве результата, 152:

15210 = 100110002

Если убрать три правых разряда, получим 100112 = 1910. То есть мы можем дописать три разряда к 19 и больше и получить значение, превосходящее 151. Однако, 19 при делении на 3 имеет остаток 1. Следовательно, нам нужно взять как минимум 20. 20 при делении на 3 имеет остаток 2. Значит, к двоичной записи будет дописано 110.

2010 = 101002 -> 101001102 = 16610

Если убрать два правых разряда, то получим число 1001102 = 3810. Остаток при делении на 3 равен 2. Значит, минимальное число, с остатком 1, будет 40.

4010 = 1010002 -> 101000112 = 16310

Ответ: 163

Решение (программное):

Переберем все числа до 151 и для запишем все полученные результаты в множество. После чего найдем минимальный элемент этого множества.

res = set()
for x in range(1, 152):
    bx = bin(x)[2:]

    if x % 3 == 0:
        bx += bx[-3: ]
    else:
        bx += bin((x%3) * 3)[2:]

    R = int(bx, 2)
    if R > 151:
        res.add(R)

print(min(res)) 

Источник: Информатика с Джобсом | ЕГЭ

Похожие материалы
  • Определите, по какой из масок.. Подготовка к ЕГЭ (ИКТ)
  • Сколько единиц в двоичной записи десятичного числа 514?
  • Чем отличается позиционная система счисления..
  • Подготовка к ЕГЭ по информатике. Основы логики.
  • Сколько единиц в двоичной записи?
  • Напишите программу, печатающую значение EOF (Си)
  • А – множество четных чисел, В – множество двузначных чисел, С...
  • 1
  • 2
  • 3
  • 4
  • 5
Оценка: 5.0 из 1

💬 Чат ЕГЭ В Telegram. Вступить

Copyright Vopvet.Ru © 2025 Хостинг от uWeb