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

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

Задача 1#56884

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

Найдите количество подходящих чисел, кратных 3  на отрезке [1;6999999999]

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

Для начала поймем, какие числа являются подходящими и кратными 3  :

def num(x):
    summ = 0
    while x > 0:
        summ += x % 10
        x //= 10
    return summ
a = set()
for i in range(1, 6999999999+1):
    t = num(i)
    if not t in a:
        if i % 3 == 0:
            print(i, t)
        a.add(t)

Данный код будет печатать числа 3,6,9  , а затем те числа, которые начинаются с 3  , 6  или 9  , а остальная часть которых будет целиком состоять из 9  .

Предлагается написать код-генератор для подобных чисел:

ans = [3, 6, 9]
nums = ’369’
x = ’9’
for i in range(9):
    for digit in nums:
        result = int(digit + x)
        if result <= 6999999999:
            ans.append(result)
    x += ’9’
print(len(ans))

Ответ: 29

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

Задача 2#56326

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

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

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

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

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

Решение 1

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)

Решение 2

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)

 

Ответ: 91

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

Задача 3#52665

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

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

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

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

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

Ответ: 323

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

Задача 4#52661

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

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

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

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

Показать ответ и решение
ans = 0
# пустая звёздочка
if 2738 % 7 == 0:
    ans += 1
#односимвольная звёздочка
for w in range(10):
    s1 = ’2738’ + str(w)
    if int(s1) % 7 == 0:
        ans += 1
#двухсимвольная звёздочка
for w in range(10):
    for z in range(10):
        s2 = ’2738’ + str(w) + str(z)
        if int(s2) % 7 == 0:
            ans += 1
print(ans)

Ответ: 15

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

Задача 5#52658

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

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

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

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

Показать ответ и решение
ans = 0
for x in range(10):
    for i in range(10):
        n = int(’9’ + str(x) + ’123’ + str(i))
        if n % 7 == 0:
            ans += 1
print(ans)

Ответ: 14

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

Задача 6#52657

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

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

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

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

Показать ответ и решение
ans = 0
for x in range(10):
    for i in [0, 5]:
        #любое число, оканчивающееся на 0 или 5, делится на 5
        ans += 1
print(ans)

Ответ: 20

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

Задача 7#33621

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

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

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

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

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

Показать ответ и решение
count = 0
for x in "1234567890":
    count += (int("12" + "4" + x + "65") % 141 == 0)
    for y in "1234567890":
        count += (int("12" + y + "4" + x + "65") % 141 == 0)
        for z in "1234567890":
            count += (int("12" + y + z + "4" + x + "65") % 141 == 0)
print(count)

Ответ: 8

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

Задача 8#32446

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

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

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

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

Показать ответ и решение
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
res = []
for i in range(1, 1000001):
    num = str(summa(i))
    if len(num) >= 3:
        if num[0] == ’1’ and int(num) % 100 == 38:
            ans += 1
print(ans)

Ответ: 945

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

Задача 9#32439

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

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

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

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

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

Ответ: 1011

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

Задача 10#30238

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

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

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

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

Показать ответ и решение
def dev(n):  
    s=0  
    for i in range(2,int(n**0.5)+1):  
        if n%i==0:  
            s+=i  
            if n//i!=i:  
                s+=n//i  
    return s  
counter=0  
for a1 in (’0123456789’):  
    for a2 in (’0123456789’):  
        s=’123’+a1+’654’+a2  
        n=int(s)  
        if dev(n)>n:  
           counter+=1  
print(counter)

Ответ: 27

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

Задача 11#30237

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

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

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

Сколько существует натуральных чисел, соответствующих следующей маске 123?654?  , чтобы в сумме нетривиальных делителей разность между суммой цифр, стоящих на нечетных местах, и суммой цифр, стоящих на четных местах делилась на 11  , кроме того, сумма цифр суммы нетривиальных должна делиться на 9  . В ответ запишите количество найденных чисел.

Показать ответ и решение
def dev(n):
    s=0
    for i in range(2,int(n**0.5)+1):
        if n%i==0:
            s+=i
            if n//i!=i:
                s+=n//i
    return s
counter=0
for a1 in (’0123456789’):
    for a2 in (’0123456789’):
        s=’123’+a1+’654’+a2
        n=str(dev(int(s)))
        summa = 0
        for i in range(len(n)):
            if i % 2 == 0:
                summa += int(n[i])
            else:
                summa -= int(n[i])
        if abs(summa)%11==0 and int(n) % 9 == 0:
            counter+=1
print(counter)

Ответ: 5

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

Задача 12#30236

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

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

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

Сколько существует натуральных чисел, соответствующих следующей маске 987?654?3  , чтобы в сумме нетривиальных делителей разность между суммой цифр, стоящих на нечетных местах, и суммой цифр, стояших на четных местах делилась на 11  . В ответ запишите количество чисел.

Показать ответ и решение
def dev(n):
    s=0
    for i in range(2,int(n**0.5)+1):
        if n%i==0:
            s+=i
            if n//i!=i:
                s+=n//i
    return s
counter=0
for a1 in (’0123456789’):
    for a2 in (’0123456789’):
        s=’987’+a1+’654’+a2+’3’
        n=str(dev(int(s)))
        summa = 0
        for i in range(len(n)):
            if i % 2 == 0:
                summa += int(n[i])
            else:
                summa -= int(n[i])
        if abs(summa)%11==0:
            counter+=1
print(counter)

Ответ: 21

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

Задача 13#30235

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

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

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

Сколько существует натуральных чисел, соответствующих следующей маске 987?654?3  , чтобы сумма цифр нетривиальных делителей делилась на 9  . В ответ запишите количетсво чисел.

Показать ответ и решение
def dev(n):  
    s=0  
    for i in range(2,int(n**0.5)+1):  
        if n%i==0:  
            s+=i  
            if n//i!=i:  
                s+=n//i  
    return s  
counter=0  
for a1 in (’0123456789’):  
    for a2 in (’0123456789’):  
        s=’987’+a1+’654’+a2+’3’  
        n=int(s)  
        if dev(n)%9==0:  
            counter+=1  
print(counter)

Ответ: 18

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

Задача 14#30234

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

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

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

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

Показать ответ и решение
def dev(n):  
    s=0  
    for i in range(1,int(n**0.5)+1):  
        if n%i==0:  
            s+=i  
            if n//i!=i:  
                s+=n//i  
    return s  
counter=0  
for a1 in (’0123456789’):  
    for a2 in (’0123456789’):  
        s=’987’+a1+’654’+a2+’3’  
        n=int(s)  
        if dev(n)%3==1:  
            counter+=1  
print(counter)

Ответ: 10

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

Задача 15#30233

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

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

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

Сколько существует простых натуральных чисел, соответствующих следующей маске 987?654?3  . В ответ запишите количество чисел.

Показать ответ и решение
def is_simple(n):
    if n==1:
        return False
    for i in range(2,int(n**0.5)+1):
        if n%i==0:
            return False
    return True
counter=0
for a1 in (’0123456789’):
    for a2 in (’0123456789’):
        s=’987’+a1+’654’+a2+’3’
        n=int(s)
        if is_simple(n):
            counter+=1
print(counter)

Ответ: 12

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

Задача 16#30227

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

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

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

Сколько существует натуральных чисел, соответствующих следующей маске 90?123?  и чтобы разряд десятков, сложенный с учетверенным разрядом единиц, был кратен 13  (то есть для числа 23  это 3∗4 + 2  ). Кроме того, сумма цифр должна быть кратна 3  . В ответ запишите в порядке возрастания найденные числа и соответствующий им результат от целочисленного деления на 39  .

Показать ответ и решение
for a1 in (’0123456789’):
    for a2 in (’0123456789’):
        s=’90’+a1+’123’+a2
        n=3+int(a2)*4
        summa = 0
        for i in s:
            summa += int(i)
        if n%13==0 and summa%3==0:
            print(int(s), int(s)//39)

Ответ: 9001239 230801 9031239 231570 9061239 232339 9091239 233108

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

Задача 17#30226

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

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

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

Сколько существует натуральных чисел, соответствующих следующей маске 90?123?  и чтобы число десятков, сложенное с учетверенным число единиц, было кратно 13  (то есть для числа 23  это 3∗ 4+ 2  ). В ответ запишите количество найденных чисел.

Показать ответ и решение
counter = 0
for a1 in (’0123456789’):
    for a2 in (’0123456789’):
        s = int(’90’+a1+’123’+a2)
        n = 3+int(a2)*4
        if n%13==0:
            counter += 1
print(counter)

Ответ: 10

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

Задача 18#30225

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

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

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

Сколько существует натуральных чисел, соответствующих следующей маске
123?123?123  и разность между суммой цифр, стоящих на нечетных местах, и суммой цифр, стоящих на четных местах делилась на 11  , а сумма всех цифр делилась на 3  . В ответ запишите количество таких чисел. Если таких чисел нет, в ответ запишите 0  .

Показать ответ и решение
counter=0
for a1 in (’0123456789’):
    for a2 in (’0123456789’):
        s=’123’+a1+’123’+a2+’123’
        n=abs(1+3+1+3+1+3-2-int(a1)-2-int(a2) - 2)
        summa = 0
        for j in s:
            summa += int(j)
        if n%11==0 and summa%3==0:
            counter+=1
print(counter)

Ответ: 7

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

Задача 19#30224

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

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

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

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

Показать ответ и решение
counter=0
for a1 in (’0123456789’):
    for a2 in (’0123456789’):
        s=’123’+a1+’123’+a2+’123’
        n=abs(1+3+1+3+1+3-2-int(a1)-2-int(a2)-2)
        if n%11==0:
            counter+=1
print(counter)

Ответ: 9

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

Задача 20#30223

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

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

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

Сколько существует натуральных чисел, соответствующих следующей маске 123?  и их сумма цифр делилась на    3  . В ответ запишите в порядке возрастания найденные числа и соответствующий им результат от целочисленного деления на 3  .

Показать ответ и решение
counter=0
for a1 in (’0123456789’):
    s=’123’+a1
    n = 0
    for i in s:
        n += int(i)
    s = int(s)
    if n%3==0:
        print(s, s//3)

Ответ: 1230 410 1233 411 1236 412 1239 413
Рулетка
Вы можете получить скидку в рулетке!