Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Тренировки Пробники Статистика Карточки Учебник Об экзамене Учительская
  • Тренажёр заданий ЕГЭ
  • Тренажёр ЕГЭ по Информатике
  • Список заданий №5
  • Задание №5
  • Задание №86292 ЕГЭ Информатике

    Условие задания #86292

    №5 по КИМ

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

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

    2.  Подсчитывается количество чётных и нечётных цифр в десятичной записи заданного числа. Если в десятичной записи больше чётных цифр, то в конец двоичной записи дописывается 1, если нечётных  — 0. Если чётных и нечётных цифр в десятичной записи поровну, то в конец двоичной записи дописывается 0, если данное число чётное, и 1  — если нечётное.

    3−4.  Пункт 2 повторяется для вновь полученных чисел ещё два раза.

    5.  Результатом работы алгоритма становится десятичная запись полученного числа R.

    Пример. Дано число N  =  14. Алгоритм работает следующим образом:

    1.  Строим двоичную запись: 1410  =  11102.

    2.  В записи числа 14 чётных и нечётных цифр поровну. Число 14 чётное, дописываем к двоичной записи 0, получаем 111002  =  2810.

    3.  В записи числа 28 чётных цифр больше нечётных, дописываем к двоичной записи 1, получаем 1110012  =  5710.

    4.  В записи числа 57 нечётных цифр больше, дописываем к двоичной записи 0, получаем 11100102  =  11410.

    5.  Результат работы алгоритма R  =  114.

     

    Определите количество принадлежащих отрезку [876 544; 1 234 567 899] чисел, которые могут получиться в результате работы этого алгоритма.

    Ответ

    Ответ:

    154211420

    Решение

    def alg(n):
        for u in range (3):
            res = [int(x) for a,x in enumerate(str(n))]
            sen, sans = 0, 0
            for i in res:
                if i % 2 == 0:
                    sen += 1
                else:
                    sans += 1
            n = n * 2 + 1 if (sen > sans or (sen == sans and n % 2 == 1)) else n * 2
        return n
    a,b = 876544, 1234567899
    n1 = a // 8-5
    while alg(n1) < a:
        n1 += 1
    n2 = b // 8-5
    while alg(n2) <= b:
        n2 += 1
    print(n2 - n1)

    Видеоразбор:

    Понятно ли решение?

    Похожие задания

    15
    Задание №72807Задание №41422Задание №41421Задание №41418Задание №41417Задание №41416Задание №84553Задание №84554Задание №84555Задание №84557Задание №41404Задание №45477Задание №41402Задание №41401Задание №41399
    Бесплатно

    Решай задачи ЕГЭ в приложении

    Скачивай наш Тренажер ЕГЭ на iPhone или Android и тренируйся в любое время и в любом месте!

    Саша — ассистент в телеграмме