Задача к ЕГЭ по информатике на тему «Маски» №2

Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:

— символ «?» означает ровно одну произвольную цифру;

— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.

Найдите такое натуральное число, соответствующее следующей маске ???1??1?  (число не может начинаться с нуля) и делящееся на 434343  без остатка. В ответ запишите найденное число и соответствующее ему частное от деления на 434343  .

Решение через циклы

for a1 in (’123456789’): # Исключаем для первого места 0, так как числа не могут начинаться с 0
    for a2 in (’0123456789’):
        for a3 in (’0123456789’):
            for a4 in (’0123456789’):
                for a5 in (’0123456789’):
                    for a6 in (’0123456789’):
                        s=a1+a2+a3+’1’+a4+a5+’1’+a6 # составляем число, удовлетворяющее маске
                        n=int(s)
                        if n%434343==0:
                            print(n,n//434343)

Решение через срезы

# для оптимизации делаем цикл с шагом 434343 с числа кратного 434343, таким образом, мы будем проходиться только по кратным 434343 числам
for x in range(10424232,10**8,434343):
    n = str(x)
    if n[-2] == ’1’ and n[-5] == ’1’: # проверка по условию
        print(x,x//434343)

Ответ: 79919112 184
Оцените статью
Я решу все!