17.01 Обработка пар элементов последовательности
Ошибка.
Попробуйте повторить позже
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от
до
включительно. Определите количество таких пар чисел, в которых хотя бы одно число в двоичной системе
счисления имеет не менее
единиц. В ответе запишите через пробел два числа: сначала количество найденных пар, а
затем — максимальную сумму элементов таких пар. В данной задаче под парой подразумевается два идущих подряд
элемента последовательности.
Например для последовательности из шести элементов:
;
;
;
;
;
; Ответ:
Решение программой
Напишем программу, которая перебирает все пары соседних чисел из последовательности. Для каждой пары проверим, содержит ли хотя бы одно из чисел в двоичной записи не менее 5 единиц. Для этого используем вспомогательную функцию, которая переводит число в двоичную систему и подсчитывает количество символов ’1’. Если условие выполнено, увеличиваем счётчик таких пар и обновляем максимум суммы элементов пары. В конце выводим количество найденных пар и максимальную сумму.
# Функция для подсчёта количества единиц в двоичной записи числа def count_one(n): return bin(n)[2:].count(’1’) # Открываем файл ’17.txt’ и считываем числа в список f = open(’17.txt’) a = [int(x) for x in f] # Счётчик подходящих пар counter = 0 # Максимальная сумма среди подходящих пар maxim = 0 # Перебираем все пары соседних элементов for i in range(len(a) - 1): # Проверяем, есть ли хотя бы в одном числе пары 5 или больше единиц if count_one(a[i]) >= 5 or count_one(a[i + 1]) >= 5: counter += 1 # Обновляем максимум суммы maxim = max(maxim, a[i] + a[i + 1]) # Выводим количество подходящих пар и максимальную сумму print(counter, maxim)
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!