17.02 Обработка троек элементов последовательности
Ошибка.
Попробуйте повторить позже
В файле(dz17-17.txt) содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 1500 включительно. Определите и запишите в ответ через пробел сначала количество троек элементов последовательности, в которых хотя бы два числа в двоичной системе счисления имеют не менее 3 единиц и эти же два числа в двоичной системе счисления имеют как минимум один ноль, а затем максимальное число среди максимальных чисел в подходящих тройках. Под тройкой подразумевается три идущих подряд элемента последовательности.
Решение программой
Напишем программу, которая будет проверять все тройки подряд идущих чисел из файла. Для каждой тройки определим, удовлетворяют ли два числа сразу двум условиям: 1. в их двоичной записи не менее трёх единиц, 2. при этом они содержат хотя бы один ноль. Если хотя бы две из трёх чисел в тройке удовлетворяют этим условиям, то тройка засчитывается. Для всех подходящих троек считаем количество и находим максимальное число среди всех чисел из таких троек.
# Открываем файл f = open("dz17–17.txt") # Считываем все числа s = [int(x) for x in f] # Счётчик подходящих троек counter = 0 # Переменная для максимального значения mx = 0 # Перебираем все тройки подряд идущих чисел for i in range(len(s) - 2): # Переводим каждое число тройки в двоичный вид, отбрасывая префикс x1 = bin(s[i])[2:] x2 = bin(s[i + 1])[2:] x3 = bin(s[i + 2])[2:] # Проверяем, удовлетворяет ли каждое число условиям: # не менее 3 единиц и хотя бы один ноль y1 = (x1.count("1") >= 3) * (x1.count("0") >= 1) y2 = (x2.count("1") >= 3) * (x2.count("0") >= 1) y3 = (x3.count("1") >= 3) * (x3.count("0") >= 1) # Если хотя бы два числа в тройке удовлетворяют условиям if sum([y1, y2, y3]) >= 2: # Увеличиваем счётчик counter += 1 # Обновляем максимум, если в текущей тройке есть большее число mx = max(mx, s[i], s[i + 1], s[i + 2]) print(counter, mx)
Специальные программы

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

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

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

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

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

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