№ 6059 (Уровень: Базовый) (А. Игнатюк)

Разбор 17.PNG

В файле представлена последовательность чисел от 0 от 10000 включительно. Необходимо определить количество пар, где имеется два четных натуральных числа с наибольшим общими делителем, превышающим число 100, и указать наибольшую возможную разность между числами в паре. Известно, что парой принято называть два стоящих подряд числа.

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

Untitled

Комментарии к первому решению:

  1. import math as m - импортируем библиотеку math и задаем ему псевдоним m.
  2. M = [int(i) for i in open('17.txt')] - открываем файл '17.txt' и читаем его содержимое, преобразуя каждую строку в целое число. Результат сохраняется в списке M.
  3. count = 0 - создаём переменную count значением 0.
  4. maxi = 0 - создаём переменную maxi значением 0.
  5. for i in range(0, len(M)-1): - пробегаем цикл, перебирая индексы элементов списка M от 0 до len(M)-1.
  6. if M[i] % 2 == 0 and M[i+1] % 2 == 0: - проверяем, являются ли текущий элемент и следующий элемент четными числами.
  7. if m.gcd(M[i], M[i+1]) > 100: - проверяем, является ли НОД (наибольший общий делитель) текущего и следующего элементов больше 100.
  8. count += 1 - увеличиваем значение переменной count на 1.
  9. maxi = max(maxi, abs(M[i] - M[i+1])) - обновляем значение переменной maxi, выбирая максимальное значение между текущим значением maxi и абсолютной разницей между текущим и следующим элементами.
  10. print(count, maxi) - выводим значения переменных count и maxi.
import math as m
M = [int(i) for i in open('17.txt')]
count = 0
maxi = 0
for i in range(0, len(M)-1):
    if M[i] % 2 == 0 and M[i+1] % 2 == 0:
        if m.gcd(M[i], M[i+1]) > 100:
            count += 1
            maxi = max(maxi, abs(M[i] - M[i+1]))
print(count, maxi)