Тема 25. Обработка целочисленной информации

25.03 Маски

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка целочисленной информации
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 41#63216Максимум баллов за задание: 1

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

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

– символ "*"означает любую последовательность цифр произвольной длины, в том числе и пустую последовательность

Среди натуральных чисел, не превышающих 106  найдите все числа, соответствующие маске 31*2?9*, кратных 61 . В ответе запишите все найденные числа в порядке возрастания через пробел.

Показать ответ и решение

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

ans = []  # Массив с найденными числами
for x in range(10):  # Перебираем ’?’
    for y in range(10):  # Перебираем ’*’
        # Т. к. числа не должны превышать 10̂6, то в числе может быть "задействована" лишь одна *
        # Составляем числа:
        s1 = int(’31’ + str(y) + ’2’ + str(x) + ’9’) # собираем число, удовлетворяющее маске
        s2 = int(’312’ + str(x) + ’9’ + str(y)) # собираем число, удовлетворяющее маске
        if s1 % 61 == 0:
            ans.append(s1)
        if s2 % 61 == 0:
            ans.append(s2)
print(*sorted(ans))  # Выводим отсортированный массив

Решение через fnmatch

from fnmatch import *

for i in range(0, 10 ** 6 + 1, 61):
    if fnmatch(str(i), ’31*2?9*’): # проверяем , что число удовлетворяет маске
        print(i, end=’ ’)

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

m = [’209’,’219’,’229’,’239’,’249’,’259’,’269’,’279’,’289’,’299’] # комбинации, которые могут быть в числе, удовлетворяющем маске
# для оптимизации делаем цикл с шагом 61, начиная с числа кратного 61, для того чтобы проходиться по числам кратным 61
for x in range(31232,10**6+1,61):
    n = str(x)
    if ’31’ in n[:2] and any(i in n[2:] for i in m): # проверки, что число удовлетворяет маске
        print(x)

Ответ: 312198 312259 312991

Ошибка.
Попробуйте повторить позже

Задача 42#63217Максимум баллов за задание: 1

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

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

– символ "*"означает любую последовательность цифр произвольной длины, в том числе и пустую последовательность

Среди натуральных чисел, не превышающих 107  найдите все числа, соответствующие маске *16*9?0?, кратных 387. В ответе запишите все найденные числа в порядке возрастания через пробел.

Показать ответ и решение

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

ans = []  # Массив с найденными числами
for x in range(10):  # Перебираем первый ’?’
    for y in range(10):  # Перебираем второй ’?’
        for z in range(10):  # Перебираем ’*’
            # Т. к. числа не должны превышать 10̂7, то в числе может быть "задействована" лишь одна *
            # Составляем числа:
            s1 = int(str(z) + ’169’ + str(x) + ’0’ + str(y)) # составляем число, удовлетворяющее маске
            s2 = int(’16’ + str(z) + ’9’ + str(x) + ’0’ + str(y)) # составляем число, удовлетворяющее маске
            if s1 % 387 == 0:
                ans.append(s1)
            if s2 % 387 == 0:
                ans.append(s2)
print(*sorted(ans))  # Выводим отсортированный массив

Решение через fnmatch

from fnmatch import *
# для оптимизации делаем цикл с шагом 387, начиная с числа кратного 387, для того чтобы проходиться по числам кратным 387
for i in range(0, 10 ** 7 + 1, 387):
    if fnmatch(str(i), ’*16*9?0?’):
        print(i, end=’ ’)

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

# для оптимизации делаем цикл с шагом 387, начиная с числа кратного 387, для того чтобы проходиться по числам кратным 387
for x in range(169119,10**7+1,387):
    n = str(x)
    if n[-2] == ’0’ and n[-4] == ’9’ and ’16’ in n[:-4]: # проверяем, что число удовлетворяет маске
        print(x)

Ответ: 169506 1169901 1619208 1649007 1669905 1699704 2169909

Ошибка.
Попробуйте повторить позже

Задача 43#63881Максимум баллов за задание: 1

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

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

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

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

Показать ответ и решение
counter=0
for a1 in (’123456789’): # исключаем 0, так как число не может начинаться с 0
    for a2 in (’0123456789’):
        for a3 in (’123456789’):
            for a4 in (’0123456789’):
                for a5 in (’0123456789’):
                    a=int(a1+a2+a3+a4+a5) # составляем число, удовлетворяющее маске
                    b=int(a3+a4) # составляем делитель, удовлетворяющий маске
                    if a%b==0:
                        counter+=1
print(counter)

Ответ: 2574

Ошибка.
Попробуйте повторить позже

Задача 44#63882Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 109  , найдите все числа, соответствующие маске 12345?7?8  , делящиеся на число 21  без остатка.

В ответе запишите все найденные числа в порядке возрастания и соответствующее им частное от деления на 21  .

Показать ответ и решение

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

for i in range(123450708,123460000):
    if (i%21==0) and (i%10==8) and ((i//100)%10==7): # проверяем, что число удовлетворяет маске
        print(i, i//21)

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

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

Ответ: 123450768 5878608 123453708 5878748 123454758 5878798 123458748 5878988 123459798 5879038

Ошибка.
Попробуйте повторить позже

Задача 45#63883Максимум баллов за задание: 1

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

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

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

Среди натуральных чисел, не превышающих 106  , найдите все числа, где сумма всех делителей числа соответствует маске 2  *45  . В ответе запишите количество найденных чисел.

Показать ответ и решение
def summa(n): # функция, которая вычисляет сумму делителей числа
    s = set()
    for i in range(1, int(n**0.5)+1):
        if n % i == 0:
            s.add(i)
            s.add(n // i)
    return sum(s)
ans = 0

for i in range(1, 1000001):
    num = str(summa(i)) # сумма делителей
    # проверки суммы делителей, что они удовлетворяют маске
    if len(num) >= 3:
        if num[0] == ’2’ and int(num) % 100 == 45:
            ans += 1
print(ans)

Ответ: 7

Ошибка.
Попробуйте повторить позже

Задача 46#64075Максимум баллов за задание: 1

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

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

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

Например, маске 123∗4?5  соответствуют числа 123495  и 12335495  .

Среди натуральных чисел, не превышающих 108  , найдите все числа, делящиеся на 394 и соответствующие маске ∗562??90  , но не соответствующие маске ?3 ∗7  .

Для каждого найденного числа в ответе укажите само число, а затем, через пробел, частное от деления на 394. Пары друг от друга так же отделите пробелом. Пары должны идти в порядке возрастания найденного числа.

Показать ответ и решение

Решение через fnmatch

import fnmatch
# для оптимизации делаем цикл с шагом 394, начиная с числа кратного 394, для того чтобы проходиться по числам кратным 394
for x in range(394,10**8,394):
    if fnmatch.fnmatch(str(x), ’*562??90’) and not fnmatch.fnmatch(str(x), ’?3*7’): # проверка, что число удовлетворяет одной маске и не удовлетворяет другой маске
        print(x, x//394)

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

# для оптимизации делаем цикл с шагом 394, начиная с числа кратного 394, для того чтобы проходиться по числам кратным 394
for x in range(5620410,10**8+1,394): #
    n = str(x)
    if ’562’ in n[-7:-4] and ’90’ in n[-2:]: # проверка, что число удовлетворяет маске
        if n[1] != ’3’ and n[-1] != ’7’: # проверка, что число не удовлетворяет маске
            print(x,x//394)

Ответ: 5628290 14285 25623790 65035 55626890 141185 75622390 191935 85629990 217335

Ошибка.
Попробуйте повторить позже

Задача 47#80722Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 108  , найдите все числа, соответствующие маске 3??2*5, делящиеся на 113 без остатка и являющиеся полными квадратами.

В ответ запишите пары чисел (найденное число и результат деления его на 113) в порядке возрастания через пробел.

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

Ответ: 319225 2825 38626225 341825

Ошибка.
Попробуйте повторить позже

Задача 48#80723Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 109  , найдите все числа, соответствующие маске ?1?5*4?6, делящиеся на 56354 без остатка.

В ответ запишите пары чисел (найденное число и результат деления его на 56354) в порядке возрастания через пробел.

Показать ответ и решение
# для оптимизации делаем цикл с шагом 56354, начиная с числа кратного 56354, для того чтоы проходиться по числам кратным 56354
for x in range(56354, 10**9+1, 56354):
    s = str(x)
    if (s[1] == ’1’) and (s[3] == ’5’)  and (s[-3] == ’4’) and (s[-1] == ’6’): # проверяем, что число удовлетворяет маске
        print(x, x//56354)

Ответ: 116596426 2069 617583486 10959 916541456 16264

Ошибка.
Попробуйте повторить позже

Задача 49#80724Максимум баллов за задание: 1

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

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

– символ «&» означает последовательность из ровно двух произвольных цифр.

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

Например, маске 123&4?5 соответствуют числа 12389405 и 12332405.

Среди натуральных чисел, не превышающих   9
10  , найдите все числа, соответствующие маске 69?73&0*, делящиеся на 8080 без остатка.

В ответ запишите пары чисел (найденное число и результат деления его на 8080) в порядке возрастания через пробел.

Показать ответ и решение
# для оптимизации делаем цикл с шагом 8080, начиная с числа кратного 8080, для того чтоы проходиться по числам кратным 8080
for x in range(8080, 10**9+1, 8080):
    s = str(x)
    if (s[0:2] == ’69’) and (s[3:5] == ’73’)  and (s[7] == ’0’): # проверяем, что число соответствует маске
        print(x, x // 8080)

Ответ: 69673840 8623 692738800 85735 696738400 86230

Ошибка.
Попробуйте повторить позже

Задача 50#80725Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 107  , найдите последние 5 чисел, соответствующие маске 9?7*13 и являющиеся простыми.

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

Показать ответ и решение
def simple(x): # функция, которая проверяет является ли число - простым
    if x == 1:
        return False
    for delim in range(2, int(x**0.5)+1):
        if x % delim == 0:
            return False
    return True

for x in range(10000, 10**7+1):
    s = str(x)
    if (s[0] == ’9’) and (s[2] == ’7’) and (s[:-3:-1] == ’31’) and simple(x): # проверка, что число удовлетворяет маске и выполняет условия
        print(x)

Ответ: 9977213 9978313 9978613 9979213 9979513

Ошибка.
Попробуйте повторить позже

Задача 51#80726Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 105  , найдите последние 5 чисел, соответствующие маске 1*77 и представляющие собой произведение двух различных простых делителей.

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

Показать ответ и решение
def simple(x): # функция, которая проверяет является ли число простым
    if x == 1:
        return False
    for delim in range(2, int(x ** 0.5) + 1):
        if x % delim == 0:
            return False
    return True


for x in range(1, 10 ** 5 + 1):
    s = str(x)
    t = 0
    if (s[0] == ’1’) and (s[:-3:-1] == ’77’): # проверка, что число удовлетворяет маске
        for i in range(2, int(x ** 0.5) + 1):
            # проверка, что число можно образовать произведением двух простых его делителей
            if simple(x // i) and simple(i) and (x % i == 0) and (i != x // i):
                t = 1
                break
    if t == 1:
        print(x)

Ответ: 18977 19077 19177 19277 19977

Ошибка.
Попробуйте повторить позже

Задача 52#80727Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 1010  , найдите последние пять чисел, соответствующие маске 9?99*16, делящиеся на 1724 без остатка.

В ответ запишите пары чисел (найденное число и результат деления его на 1724) в порядке возрастания через пробел.

Показать ответ и решение
# для оптимизации делаем цикл с шагом 1724, начиная с числа кратного 1724, для того чтобы проходиться по числам кратным 1724
for x in range(1724, 10**10+1, 1724):
    s = str(x)
    if (s[0] == ’9’) and (s[2:4] == ’99’) and (s[:-3:-1] == ’61’): # проверка, что число соответствует маске
        print(x, x // 1724)

Ответ: 9999818916 5800359 9999862016 5800384 9999905116 5800409 9999948216 5800434 9999991316 5800459

Ошибка.
Попробуйте повторить позже

Задача 53#80728Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 1010  , найдите последние пять чисел, соответствующие маске ?3*313?, делящиеся на 8965 без остатка.

В ответ запишите пары чисел (найденное число и результат деления его на 8965) в порядке возрастания через пробел.

Показать ответ и решение
# для оптимизации делаем цикл с шагом 8965, начиная с числа кратного 8965, для того чтобы проходиться по числам кратным 8965
for x in range(8965, 10**10+1, 8965):
    s = str(x)
    if (s[1] == ’3’) and (s[-4:-1] == ’313’): # проверка, что число соответствует маске
        print(x, x // 8965)

Ответ: 9358913135 1043939 9370953130 1045282 9376843135 1045939 9388883130 1047282 9394773135 1047939

Ошибка.
Попробуйте повторить позже

Задача 54#80729Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 1010  , найдите последние пять чисел, соответствующие маске 19*11*67, делящиеся на 3939 без остатка.

В ответ запишите 5 последних пар чисел (найденное число и результат деления его на 3939) в порядке возрастания через пробел.

Показать ответ и решение

Решение через fnmatch

from fnmatch import *
# для оптимизации делаем цикл с шагом 3939, начиная с числа кратного 3939, для того чтобы проходиться по числам кратным 3939
for n in range(3939, 10 ** 10 + 1, 3939):
    if fnmatch(str(n), ’19*11*67’): # проверка, что число соответствует маске
        print(n, n // 3939)

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

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

Ответ: 1936621167 491653 1943711367 493453 1951195467 495353 1976011167 501653 1981131867 502953

Ошибка.
Попробуйте повторить позже

Задача 55#80730Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 1011  , найдите все числа, соответствующие маске 1?20*24?4, делящиеся на 17456 без остатка.

В ответ запишите пары: найденное число, через пробел, частное от деления на 17456. Пары отсортируйте порядке возрастания найденных чисел, друг от друга пары также отделите пробелом.

Показать ответ и решение

Решение через fnmatch

from fnmatch import *
# для оптимизации делаем цикл с шагом 17456, начиная с числа кратного 17456, для того чтобы проходиться по числам кратным 17456
for n in range(17456, 10 ** 11 + 1, 17456):
    if fnmatch(str(n), ’1?20*24?4’): # проверка, что число соответствует маске
        print(n, n // 17456)

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

# для оптимизации делаем цикл с шагом 17456, начиная с числа кратного 17456, для того чтобы проходиться по числам кратным 17456
for x in range(10211760, 10**11+1,17456):
    n = str(x)
    if n[0] == ’1’ and n[-1] == ’4’ and ’20’ in n[2:4] and ’24’ in n[-4:-2]: # проверка, что число соответствует маске
        print(x,x//17456)

Ответ: 1220942464 69944 1820992464 104319 11203592464 641819 12207312464 699319 13200122464 756194 14203842464 813694 15207562464 871194 16200372464 928069 17204092464 985569 18207812464 1043069 19200622464 1099944

Ошибка.
Попробуйте повторить позже

Задача 56#80731Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 109  , найдите все числа, соответствующие маске 35??78*9, делящиеся на 1777 без остатка и частные от деления найденных чисел на 1777.

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

Показать ответ и решение
# для оптимизации делаем цикл с шагом 1777, начиная с числа кратного 1777, для того чтобы проходиться по числам кратным 1777
for x in range(1777, 10**9+1, 1777):
    s = str(x)
    if (s[0:2] == ’35’) and (s[4:6] == ’78’) and (s[-1] == ’9’): # проверка, что число соответствует маске
        print(x, x // 1777)

Ответ: 35907839 20207 350578999 197287 351378649 197737 352178299 198187 355678989 200157 356478639 200607 357278289 201057

Ошибка.
Попробуйте повторить позже

Задача 57#80732Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 108  , найдите все числа, соответствующие маске ?9?73* и являющиеся полными квадратами.

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

Показать ответ и решение
for x in range(10000, 10**8+1):
    s = str(x)
    if (s[1] == ’9’) and (s[3:5] == ’73’) and int(x**0.5)**2 == x: # проверка, что число соответствует маске и выполняет условие
        print(x)

Ответ: 4977361 7907344 19873764 29073664 49773025 69973225 79673476

Ошибка.
Попробуйте повторить позже

Задача 58#80733Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 1010  , найдите все числа, соответствующие маске 30?125*8, делящиеся на 6036 без остатка.

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

Показать ответ и решение
# для оптимизации делаем цикл с шагом 6036, начиная с числа кратного 6036, для того чтобы проходиться по числам кратным 6036
for x in range(6036, 10**10+1, 6036):
    s = str(x)
    if (s[0:2] == ’30’)  and (s[3:6] == ’125’) and (s[-1] == ’8’): # проверка, что число соответствует маске
        print(x, x // 6036)

Ответ: 308125728 51048 3011257788 498883 3041256708 503853 3071255628 508823

Ошибка.
Попробуйте повторить позже

Задача 59#80734Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 1011  , найдите все числа, соответствующие маске 10??758*8, делящиеся на 19562 без остатка.

В ответ запишите пары: найденное число, через пробел, частное от деления на 19562. Пары отсортируйте порядке возрастания найденных чисел, друг от друга пары также отделите пробелом.

Показать ответ и решение
# для оптимизации делаем цикл с шагом 19562, начиная с числа кратного 19562, для того чтобы проходиться по числам кратным 19562
for x in range(19562, 10**11+1, 19562):
    s = str(x)
    if (s[0:2] == ’10’)  and (s[4:7] == ’758’) and (s[-1] == ’8’): # проверка, что число соответствует маске
        print(x, x // 19562)

Ответ: 107375818 5489 10017582828 512094 10057587118 514139 10227580898 522829 10267585188 524874 10307589478 526919 10477583258 535609 10517587548 537654 10687581328 546344 10727585618 548389 10767589908 550434 10937583688 559124 10977587978 561169

Ошибка.
Попробуйте повторить позже

Задача 60#80735Максимум баллов за задание: 1

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

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

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

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

Среди натуральных чисел, не превышающих 1010  , найдите все числа, соответствующие маске 1?57*22 и делящиеся на 3798 без остатка.

В ответе через пробел запишите количество подходящих чисел и целую часть их среднего арифметического.

Показать ответ и решение
a = set()
# для оптимизации делаем цикл с шагом 3798, начиная с числа кратного 3798, для того чтобы проходиться по числам кратным 3798
for x in range(3798, 10**10+1, 3798):
    s = str(x)
    if (s[0] == ’1’)  and (s[2:4] == ’57’) and (s[-2:] == ’22’): # проверка, что число соответствует маске
        a.add(x)
print(len(a))
print(sum(a)/len(a))

Ответ: 58 1360526239
Рулетка
Вы можете получить скидку в рулетке!