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

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

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

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

– символ «#» означает любое простое трехзначное число

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

Среди натуральных чисел, не превышающих   11 10  , найдите все числа, соответствующие маске 1?0*12#10

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

from fnmatch import *
#функция для проверки на простоту
def f(x):
    for i in range(2, int(x**0.5)+1):
        if x % i == 0:
            return False
    return True
t = [] #список простых чисел
for i in range(100, 1000):
    if f(i):
        t.append(i)
res = [] #список искомых чисел
for i in range(10**7):
    if fnmatch(str(i), ’1?0*12’):
        for j in t:
            if len(str(i)+str(j)+’10’) <= 11:
                res.append(str(i)+str(j)+’10’)
            else:
                break
print(len(res))

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