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

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

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

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

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

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

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