17.01 Обработка пар элементов последовательности
Ошибка.
Попробуйте повторить позже
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от
до
включительно. Определите и запишите в ответе через пробел сначала количество пар чисел, в
которых оба элемента не превосходят остаток от деления суммы всех чисел в файле на
и хотя бы у
одного из них шестнадцатеричная запись числа оканчивается на
, а затем, через пробел, — максимальное
произведение элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента
последовательности.
Решение программой
Напишем программу, которая перебирает все пары подряд идущих чисел из файла. Для каждой пары проверяем два условия. Первое: оба числа не должны превышать остаток от деления суммы всех чисел файла на 54321. Для этого сначала вычисляем сумму всех чисел и берём остаток от деления на 54321.
Второе условие: хотя бы у одного из чисел шестнадцатеричная запись оканчивается на букву ’B’. Это можно проверить через остаток от деления числа на 16 — если он равен 11 (что соответствует ’B’ в шестнадцатеричной системе), значит условие выполнено.
Если оба условия выполняются, увеличиваем счётчик таких пар и обновляем максимальное произведение элементов этих пар. В конце выводим количество подходящих пар и максимальное произведение.
# открываем файл и считываем последовательность чисел f = open("17.txt") a = [int(s) for s in f.readlines()] n = len(a) counter = 0 maxim = -10**18 # инициализируем очень маленьким числом для максимума # вычисляем остаток от деления суммы всех чисел на 54321 ost = sum(a) % 54321 # перебираем все пары подряд идущих элементов for i in range(n - 1): x, y = a[i], a[i + 1] # проверяем, что оба числа не больше ost if x <= ost and y <= ost: # проверяем, что хотя бы одно число в шестнадцатеричной записи оканчивается на ’B’ (остаток от деления на 16 равен 11) if x % 16 == 11 or y % 16 == 11: counter += 1 maxim = max(maxim, x * y) # выводим количество таких пар и максимальное произведение print(counter, maxim)
Специальные программы

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

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

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

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

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

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