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

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

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

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

Например, маске 123*4?5 соответствуют числа 123405 и 12300405.

Среди натуральных чисел, находящихся в интервале [103;106  ], найдите все числа, соответствующие маске 16* и имеющих ровно 13 нетривиальных делителей.

В ответ запишите найденные числа в порядке возрастания через пробел.

for x in range(10**3, 10**6+1):
    c = set()
    s = str(x)
    if  s[:2] == ’16’ and x**0.5 == int(x**0.5): # проверка, что число удовлетворяет маске и у него есть целый корень, только так у числа может быть нечётное кол-во делителей
        for i in range(2, int(x**0.5)+1):
        #если i делитель x
            if x % i == 0:
            # то добавляем i и парный ему делитель во множество
                c.add(i)
                c.add(x//i)
    if len(c) == 13:
        print(x)

Ответ: 16384 163216 169744
Оцените статью
Я решу все!