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

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

    №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.

     

    Определите количество принадлежащих отрезку [123 455; 987 654 321] чисел, которые могут получиться в результате работы этого алгоритма.

    Ответ

    Ответ:

    123441358

    Решение

    def novoech(pr):
        for i in range (0, 3):
            n = str(pr)
            nechet = n.count('1') + n.count('3') + n.count('5') + n.count('7') + n.count('9')
            chet = n.count('0') + n.count('2') + n.count('4') + n.count('6') + n.count('8')
            if nechet > chet:
                pr = pr*2
            elif nechet < chet:
                pr = pr*2 + 1
            elif nechet ==chet:
                if nechet%2 == 0:
                    pr = pr*2
                else:
                    pr = pr*2 + 1
        return pr
    minch = 123455//8
    for pr in range (minch - 1, minch + 2):
        r = novoech(pr)
        if r >= 123455:
            minch = pr
            break
    maxch = 987654321//8
    for pr in range (maxch - 1, maxch + 2):
        r = novoech(pr)
        if r <= 987654321:
            maxch = pr
    print ( maxch - minch + 1 )

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

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

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

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

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

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

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