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

25.03 Маски

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

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

Задача 1#56326

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

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

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

Среди натуральных чисел, не превышающих 107  , найдите все числа, соответствующие маске ?123 ∗1  и делящиеся на 11  без остатка. В ответе запишите количество найденных чисел.

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

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

ans = 0
for i in range(1, 10):
    # пустая звёздочка
    s = str(i) + ’1231’ # составляем число, удовлетворяющее маске
    if int(s) % 11 == 0:
        ans += 1
    #односимвольная звёздочка
    for w in range(10):
        s1 = str(i) + ’123’ + str(w) + ’1’ # составляем число, удовлетворяющее маске
        if int(s1) % 11 == 0:
            ans += 1
    #двухсимвольная звёздочка
    for w in range(10):
        for z in range(10):
            s2 = str(i) + ’123’ + str(w) + str(z) + ’1’ # составляем число, удовлетворяющее маске
            if int(s2) % 11 == 0:
                ans += 1
print(ans)

Решение используя itertools

from itertools import product
ans = 0
for i in range(1, 10): # симулируем вопрос
    for k in range(0, 3):
        for j in product(’0123456789’, repeat=k): # симулируем звёздочку
            s = str(i) + ’123’ + ’’.join(j) + ’1’ # составляем число, удовлетворяющее маске
            if int(s) % 11 == 0:
                ans += 1
print(ans)

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

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

Ответ: 91

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

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