⚡Разбор задачи №17 (ЕГЭ по информатике)
Условие кратко:
Дана последовательность чисел. Нужно найти пары соседних элементов, где:
1. Хотя бы одно число - четырёхзначное
2. Квадрат суммы пары меньше, чем квадрат максимального четырёхзначного числа последовательности, которое оканчивается на 43
В ответе нужно вывести:
- количество таких пар
- максимальный квадрат суммы среди них
1. Чтение файла
f = open('17_27629.txt')
data = [int(i) for i in f]
f.close()Тут всё просто: открыли файл, прочитали данные, закрыли файл.
2. Переменные для ответа
k = 0
m_kv = 0
k - количество подходящих пар
m_kv -максимальный суммы среди найденных пар
3. Поиск нужного четырёхзначного числа
Нам нужно найти:
максимальный четырёхзначный элемент, который оканчивается на 43
m_43 = (max(i for i in data if len(str(abs(i))) == 4 and abs(i) % 100 == 43))**2
Разберём условие подробнее:
С помощью генератора мы проходимся по всем числам последовательности, для каждого берём модуль (чтобы убрать минус в отрицательных элементах), создаём строковый тип данных и вычисляем его длину. Если она равна 4-м, значит следует проверить только окончание, берём остаток от деления на 100 и готово!
4. Перебор соседних пар
По условию пара - это два подряд идущих элемента.
for i in range(len(data) - 1):
Мы берём:
data[i]
data[i+1]
5. Проверка на четырёхзначное число: по условию хотя бы один элемент пары - четырёхзначный
if len(str(abs(data[i]))) == 4 or len(str(abs(data[i + 1]))) == 4:
Используем or, потому что достаточно одного числа.
6. Проверка основного условия задачи.
(сумма пары)^2 < квадрата найденного числа
if (data[i] + data[i + 1])**2 < m_43:
7. Если условия выполняются, увеличиваем счётчик на 1 и обновляем максимум квадратов сумм:
k += 1
m_kv = max((data[i] + data[i + 1])**2, m_kv)
8. Вывод ответа:
print(k, m_kv)
На этом всё! Согласитесь, не так уж и страшно)
С вас лайк (пожалуйста) 💞
