Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Среди натуральных чисел, не превышающих , найдите все числа, где сумма всех делителей числа соответствует маске
*
. В ответе запишите количество найденных чисел.
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
for i in range(1, 1000001):
num = str(summa(i)) # сумма делителей
# проверки суммы делителей, что они удовлетворяют маске
if len(num) >= 3:
if num[0] == ’2’ and int(num) % 100 == 45:
ans += 1
print(ans)
Ответ: 7