28 мая 2025 г.

Программирование. Задание № 25 "Маски"

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

- символ «?» означает ровно одну произвольную цифру;
- символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Среди натуральных чисел, не превышающих 1010, найдите все числа, соответствующие маске 54?1?3*7, делящиеся на 18579 без остатка. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце - соответствующие им результаты деления этих чисел на 18579.


Решение: напишем программу на языке Phyton
for i1 in range(0,10):
    for i2 in range(0,10):
        s = '54' + str(i1) + '1' + str(i2) + '37'
        n = int(s)
        if n%18579 == 0: print (n,n//18579)
        for i3 in range(0,1000):
            d=len(str(i3))
            k=3-d
            for i4 in range(0,k+1):
               s='54'+str(i1)+'1'+str(i2)+'3'+\
                i4*'0'+str(i3)+'7'
                n = int(s)
                if n%18579 == 0: print (n,n//18579)

Вывод:
5411932647 291293
5421036357 291783
5451134337 293403
545163597 29343
5461538577 293963
5481232317 295023
5491636557 295583

Ответ:
545163597 29343
5411932647 291293
5421036357 291783
5451134337 293403
5461538577 293963
5481232317 295023
5491636557 295583

Комментариев нет:

Отправить комментарий