Задача #2987
Делители и маски
(В. Зарянкин) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:]\
1) символ «?» означает ровно одну произвольную цифру;
2) символ «&» означает последовательность цифр, образующих степень двойки (1, 2, 4, 8, 16, ...).
Например, маске 12&3? могут соответствовать числа 12135 и 123237.
Среди натуральных чисел, не превышающих 1010, найдите числа, соответствующие маске 8902??&, делящиеся на 1432 без остатка.
В ответе запишите в первом столбце таблицы первые 5 найденных чисел в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на 1432.
Количество строк в таблице для ответа избыточно.
Решение
Ответ
from itertools import *
answers=[]
for q0 in '0123456789':
for q1 in '0123456789':
for amp in [str(2**x) for x in range(20)]:
s='8902'+q0+q1+amp
if int(s)%1432==0 and int(s)<=10**10:
answers.append((int(s), int(s)//1432))
answers=sorted(answers)
for i in range(5):
print(answers[i][0],answers[i][1])