schoolМатематика
verifiedРешено AI
Решение задачи 17 ЕГЭ по информатике на Python
help_outlineУсловие задачи
Напиши программу в питоне,в формате 10 класса

lightbulbКраткий ответ
Представлен код на Python для решения задачи из ЕГЭ по информатике (задание 17). Программа анализирует пары чисел из файла, проверяя условия кратности и остатков от деления.
Подробное решение
Ниже представлены решения задач на языке Python, оформленные так, чтобы их было удобно переписать в тетрадь. Эти задачи относятся к разделу 17 ЕГЭ по информатике.
Задача 1
Для решения этой задачи нам нужно считать числа из файла, пройтись по ним циклом и проверить условия для каждой пары соседних элементов.
Код программы:
f = open('17_2_1.txt')
a = []
for line in f:
a.append(int(line))
count = 0
total_sum = 0
for i in range(len(a) - 1):
n1 = a[i]
n2 = a[i+1]
# Условие 1: ровно один элемент имеет остаток 17 при делении на 80
cond1 = (n1 % 80 == 17) + (n2 % 80 == 17) == 1
# Условие 2: оба элемента кратны 7
cond2 = (n1 % 7 == 0) and (n2 % 7 == 0)
if cond1 and cond2:
count += 1
# Добавляем в сумму тот элемент, у которого остаток 17
if n1 % 80 == 17:
total_sum += n1
else:
total_sum += n2
print(count, total_sum)
Пояснение к логике:
Выражение \( (n1 \% 80 == 17) + (n2 \% 80 == 17) == 1 \) работает потому, что в Python логическое значение True приравнивается к 1, а False к 0. Если сумма равна 1, значит ровно одно условие истинно.
Задача 2
Эта задача сложнее, так как требует проверки цифр внутри числа. Мы напишем вспомогательные функции для проверки возрастания и убывания цифр.
Код программы:
def is_increasing(n):
s = str(n)
for i in range(len(s) - 1):
if s[i] >= s[i+1]:
return False
return True
def is_decreasing(n):
s = str(n)
for i in range(len(s) - 1):
if s[i] <= s[i+1]:
return False
return True
def sum_digits(n):
return sum(int(d) for d in str(n))
# Находим минимальное число из строго убывающих цифр во всем файле
f = open('17_2_2.txt')
a = [int(x) for x in f]
f.close()
min_dec = 10**10 # Очень большое число для поиска минимума
for x in a:
if is_decreasing(x):
if x < min_dec:
min_dec = x
# Вычисляем сумму цифр этого минимального числа
s_min_dec = sum_digits(min_dec)
count = 0
min_pair_sum = 10**10
for i in range(len(a) - 1):
n1, n2 = a[i], a[i+1]
# Условие 1: только одно число состоит из возрастающих цифр
cond1 = (is_increasing(n1) + is_increasing(n2)) == 1
# Условие 2: произведение кратно сумме цифр минимального убывающего
cond2 = (n1 * n2) % s_min_dec == 0
if cond1 and cond2:
count += 1
if n1 + n2 < min_pair_sum:
min_pair_sum = n1 + n2
print(count, min_pair_sum)
Математические формулы условий:
Для первой задачи условие кратности и остатка записывается как:
\[ n \equiv 17 \pmod{80} \]
\[ n \equiv 0 \pmod{7} \]
Для второй задачи условие возрастания цифр числа \( d_1 d_2 ... d_k \):
\[ d_1 < d_2 < ... < d_k \]
Условие кратности произведения:
\[ (n_i \cdot n_{i+1}) \equiv 0 \pmod{S_{min\_dec}} \]