ЕГЭ по информатике 2021: Python, задача 17 (делимость)

Разбор 17 задания ЕГЭ по информатике 2021 года, предполагающего перебор целых чисел на заданном отрезке и проверку их на делимость. Рассмотрим несколько задач различной сложности, используя язык программирования Python.

Задача 1: Делимость на 5 и не делимость на 11, 17, 19 и 23

Множество целых чисел от 1033 до 7737 включительно, которые делятся на 5 и не делятся на 11, 17, 19 и 23. Необходимо найти количество таких чисел и максимальное из них. В ответе — два числа: количество, затем максимальное число.

Решение:

k = 0
max_num = 0
for i in range(1033, 7738):
    if i % 5 == 0 and i % 11 != 0 and i % 17 != 0 and i % 19 != 0 and i % 23 != 0:
        k += 1
        max_num = max(max_num, i)
print(k, max_num)

Результат: 1040 7730

Задача 2: Делимость на 8 и не делимость на 7, 11, 17 и 19

Множество целых чисел от 200 до 9120 включительно, которые делятся на 8 и не делятся на 7, 11, 17 и 19. Необходимо найти количество таких чисел и минимальное из них.

Решение:

k = 0
min_num = 9121 
for i in range(200, 9121):
    if i % 8 == 0 and i % 7 != 0 and i % 11 != 0 and i % 17 != 0 and i % 19 != 0:
        k += 1
        min_num = min(min_num, i)
print(k, min_num)

Результат: 776 200

Задача 3: Остатки от деления на 3 и 7

Множество целых чисел от 3994 до 8599 включительно, удовлетворяющие условиям: остаток от деления на 3 равен 1, остаток от деления на 7 равен 5. Необходимо найти наибольшее из таких чисел и их сумму.

Решение:

max_num = 0
sum_nums = 0
for i in range(3994, 8600):
    if i % 3 == 1 and i % 7 == 5:
        max_num = max(max_num, i)
        sum_nums += i
print(max_num, sum_nums)

Результат: 8587 1486388

Задача 4: Последние цифры в двоичной и четверичной системах

Множество целых чисел от 3712 до 8430 включительно, удовлетворяющие условиям: запись в двоичной и четверичной системах счисления заканчивается одинаковой цифрой; число кратно хотя бы одному из чисел 13, 14 или 15. Необходимо найти количество таких чисел и минимальное из них.

Решение:

k = 0
min_num = 8431
for i in range(3712, 8431):
    if i % 2 == i % 4 and (i % 13 == 0 or i % 14 == 0 or i % 15 == 0):
        k += 1
        min_num = min(min_num, i)
print(k, min_num)

Результат: 471 3720

Задача 5: Запись в четверичной системе счисления

Множество целых чисел от 1000 до 9999 включительно, которые не делятся на 3, 17 и 19, и запись которых в четверичной системе счисления имеет ровно шесть цифр. Необходимо найти минимальное и максимальное числа.

Решение:

min_num = 9999
max_num = 0
for i in range(1000, 10000):
    if i % 3 != 0 and i % 17 != 0 and i % 19 != 0:
        temp = i
        count = 0
        while temp > 0:
            temp //= 4
            count += 1
        if count == 6:
            min_num = min(min_num, i)
            max_num = max(max_num, i)
print(min_num, max_num)

Результат: 1243 9094

Задача 6: Цифра в разряде десятков

Множество целых чисел от 1476 до 7039 включительно, кратные 2, но не кратные 16, и цифра в разряде десятков которых не меньше 4. Необходимо найти количество таких чисел и среднее арифметическое минимального и максимального из них.

Решение:

numbers = []
for i in range(1476, 7040):
    if i % 2 == 0 and i % 16 != 0 and (i // 10) % 10 >= 4:
        numbers.append(i)

print(len(numbers), (min(numbers) + max(numbers)) // 2)

Результат: 1455 4237

Задача 7: Цифры 7 или 4

Множество целых чисел от 1388 до 63253 включительно, которые не делятся на 12 и имеют в своей записи хотя бы одну цифру 7 или 4. Необходимо найти количество таких чисел и максимальное из них.

Решение:

numbers = []
for i in range(1388, 63254):
    if i % 12 != 0:
        temp = i
        found = False
        while temp > 0:
            if temp % 10 == 7 or temp % 10 == 4:
                found = True
                break
            temp //= 10
        if found:
            numbers.append(i)

print(len(numbers), max(numbers))

Результат: 37771 63249

Задача 8: Кратность сумме и произведению цифр

Множество целых чисел от 1111 до 9999 включительно, кратные одновременно сумме и произведению своих цифр. Необходимо найти количество таких чисел и максимальное из них.

Решение:

numbers = []
for i in range(1111, 10000):
    s = 0
    p = 1
    temp = i
    while temp > 0:
        digit = temp % 10
        s += digit
        p *= digit
        temp //= 10
    if p > 0 and i % s == 0 and i % p == 0:
        numbers.append(i)

print(len(numbers), max(numbers))

Результат: 19 9612

Рассмотрены различные варианты 17 задания ЕГЭ по информатике, демонстрирующие применение циклов и условных операторов в Python для решения задач на перебор и проверку свойств чисел. Представленные решения иллюстрируют различные подходы к обработке условий задачи и оптимизации кода.

Что будем искать? Например,программа