Найти тему

Разбор номера 8427 ЕГЭ по информатике #17

Оглавление

Условие: № 8427 (Уровень: Средний)

Файл содержит последовательность натуральных чисел, не превышающих 20 000. Назовём парой два идущих подряд элемента последовательности. Определите количество пар, для которых выполняются следующие условия:

– ровно одно число в паре четырёхзначное;

– сумма квадратов элементов пары без остатка делится на наименьшее в последовательности трёхзначное число, запись которого заканчивается цифрой 3.

В ответе запишите два числа: сначала количество найденных пар, затем максимальную из сумм квадратов элементов таких пар.

Файлы к заданию: 17.txt

-2
M = [int(i) for i in open('17.txt')]
n = min(i for i in M if len(str(i)) == 3 and i % 10 == 3)

A = []
for i in range(len(M) - 1):
if (len(str(M[i])) == 4) + (len(str(M[i+1])) == 4) == 1:
if (M[i] ** 2 + M[i + 1] ** 2) % n == 0:
A.append(M[i] ** 2 + M[i + 1] ** 2)
print(len(A), max(A))

Комментарии к первому варианту решения задачи:

  1. M = [int(i) for i in open('17.txt')] - Открываем файл 17.txt, читаем его содержимое, и преобразуем каждую строку в целое число используя генератор списков.
  2. n = min(i for i in M if len(str(i)) == 3 and i % 10 == 3) - Создаём список, чтобы найти минимальное число n из списка M, которое имеет длину 3 (т.е. трехзначное) и оканчивается на 3.
  3. A = [] - Создаем пустой список A, в который будем добавлять суммы квадратов пар чисел, удовлетворяющих определенным условиям задачи.
  4. for i in range(len(M) - 1): - Начинаем цикл, проходящий по индексам списка M, за исключением последнего элемента (при просмотре пар i и i+1 есть вероятность выхода за диапазона).
  5. if (len(str(M[i])) == 4) + (len(str(M[i+1])) == 4) == 1: - В этих двух строках мы проверяем условия для каждой пары элементов списка M.
  6. if (M[i] ** 2 + M[i + 1] ** 2) % n == 0: - Условие (len(str(M[i])) == 4) + (len(str(M[i+1])) == 4) == 1 гарантирует, что только одно число в паре является четырехзначным. Затем мы проверяем, делится ли сумма квадратов пары чисел на n без остатка ((M[i] ** 2 + M[i + 1] ** 2) % n == 0).
  7. A.append(M[i] ** 2 + M[i + 1] ** 2) - Если условие в предыдущей строке выполняется, то добавляем сумму квадратов пары чисел в список A.
  8. print(len(A), max(A) - В конце кода выводим количество элементов в списке A (количество найденных пар) и максимальное значение из списка A (максимальную сумму квадратов элементов пар).
-3
M = [int(i) for i in open('17.txt')]
n = min(i for i in M if len(str(i)) == 3 and i % 10 == 3)

count = 0
maxi = 0

for i in range(len(M) - 1):
if (len(str(M[i])) == 4) != (len(str(M[i + 1])) == 4):
if (M[i] ** 2 + M[i + 1] ** 2) % n == 0:
count += 1
maxi = max(maxi, M[i] ** 2 + M[i + 1] ** 2)

print(count, maxi)

Комментарии ко второму варианту решения задачи:

  1. M = [int(i) for i in open('17.txt')] - Открываем файл 17.txt, читаем его содержимое, и преобразуем каждую строку в целое число.
  2. n = min(i for i in M if len(str(i)) == 3 and i % 10 == 3) - Создаём список, чтобы найти минимальное число n из списка M, которое имеет длину 3 (т.е. трехзначное) и оканчивается на 3.
  3. count = 0 и maxi = 0 - Здесь мы создаем переменные count и maxi со значениями 0, count будет использоваться для подсчета количества пар, удовлетворяющих условиям, а maxi будет хранить максимальную сумму квадратов элементов пары.
  4. for i in range(len(M) - 1): - Начинаем цикл, проходящий по индексам списка M, за исключением последнего элемента (при просмотре пар i и i+1 есть вероятность выхода за диапазона).
  5. if (len(str(M[i])) == 4) != (len(str(M[i + 1])) == 4)- В этих строках мы проверяем условия для каждой пары элементов списка M.
  6. if (M[i] ** 2 + M[i + 1] ** 2) % n == 0: Условие (len(str(M[i])) == 4) != (len(str(M[i + 1])) == 4) - гарантирует, что только одно число в паре является четырехзначным. Затем мы проверяем, делится ли сумма квадратов пары чисел на n без остатка ((M[i] ** 2 + M[i + 1] ** 2) % n == 0).
  7. count += 1 и maxi = max(maxi, M[i] ** 2 + M[i + 1] ** 2) - Если условие в предыдущей строке выполняется, то увеличиваем значение переменной count на 1 (для подсчета количества пар) и обновляем значение переменной maxi с помощью функции max, чтобы сохранить максимальную сумму квадратов элементов пары.
  8. print(count, maxi) - В конце кода выводим значения переменных count и maxi, которые представляют количество найденных пар и максимальную сумму квадратов элементов пары соответственно.

Ответ: 74 433966217

Информатика ЕГЭ | itpy 👨‍💻

Присоединяйтесь и готовьтесь вместе с нами: https://t.me/+SIliQTddHE8xNTk6
Присоединяйтесь и готовьтесь вместе с нами: https://t.me/+SIliQTddHE8xNTk6