Найти в Дзене

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

Оглавление

Условие: № 6059 (Уровень: Базовый)

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

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

-2
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)

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

  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.

-3
def NOD(a, b):
big_divisors = 1
for j in range(1, min(a, b)+1):
if a % j == 0 and b % j == 0:
big_divisors = j
return big_divisors

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 NOD(M[i], M[i+1]) > 100:
count += 1
maxi = max(maxi, abs(M[i] - M[i+1]))
print(count, maxi)

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

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

Ответ: 25 7952

Читайте нас в телеграмме:

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

Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy
Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy