9мес


Программирование
+1Среди натуральных чисел, не превышающих 10^10 , найдите первые два числа, соответствующие маске 1?6154*1, деля
Среди натуральных чисел, не превышающих 10^10 , найдите первые два числа, соответствующие маске 1?6154*1, делящиеся на 1987 без остатка. В ответе запишите сначала найденное число, а через пробел, соответствующее ему результат деления этого числа на 1987, найденные числа запишите в порядке возрастания через пробел в 2 строки.
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
По дате
По рейтингу
Надёжно, грубо, зримо:
12345678910111213141516
def fnd(k):
res=[]
for i1 in '0123456789':
for i2 in ['','0','1','2','3','4','5','6','7','8','9']:
for i3 in ['','0','1','2','3','4','5','6','7','8','9']:
for i4 in ['','0','1','2','3','4','5','6','7','8','9']:
ts=int('1'+i1+'6154'+i2+i3+i4+'1')
if ts%1987:
continue
res.append(ts)
if len(res)>=k:
return res
return res
#
for i in fnd(2):
print(i, i//1987)