Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Сколько существует натуральных чисел, не превышающих , соответствующих следующей маске
*
?
и их сумма цифр делилась на
. В ответ запишите количество таких чисел.
Примечание. Если сумма цифр числа делится на 9, то и само число делится на 9.
Решение через срезы
count = 0 # Количество подходящих чисел
# Будем перебирать числа, которые сразу оканчиваются на 34
for i in range(34, 10**9+1, 100):
s = str(i)
if i % 9 == 0: # Сумма цифр кратна 9, если число кратно 9
if s[0] == ’1’ and s[-5:-3] == ’23’: # Проверяем оставшуюся маску
count += 1
print(count)
Решение через ручное составление
ans = 0
for j in range(10):
# пустая звёздочка
s = "123" + str(j) + "34" # составляем слово
if int(s) % 9 == 0:
ans += 1
#односимвольная звёздочка
for w in range(10):
s1 = "1" + str(w) + "23" + str(j) + "34" # составляем слово
if int(s1) % 9 == 0:
ans += 1
#двухсимвольная звёздочка
for w in range(10):
for z in range(10):
s2 = "1" + str(w) + str(z) + "23" + str(j) + "34" # составляем слово
if int(s2) % 9 == 0:
ans += 1
#трехсимвольная звёздочка
for w in range(10):
for z in range(10):
for k in range(10):
s3 = "1" + str(w) + str(z) + str(k) + "23" + str(j) + "34" # составляем слово
if int(s3) % 9 == 0:
ans += 1
print(ans)