как мне ускорить программу?

n, m = map(int, input().split())
sub_count = 1
count = 0

for i in range(m):
   i = 10 ** len(str(n))
   if sub_count % i == n:
       count += 1
   sub_count += 1
print(count)

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Нужно сосчитать сколько раз повторится остаток n в диапазоне чисел [1, m]. Обозначим это количество как fn,m.

Первое наблюдение: fn,m = f0...0,m-n. Вторая запись немного странная: число нулей равно числу знаков в n. Если вы сомневаетесь, подумайте как соотносятся fn,m и fn-1,m-1.

f0...0,m-n - это количество чисел кратных 10...0 плюс единица. Что даёт формулу в программе ниже:

n, m = map(int, input().split())
print(1 + (m - n) // 10 ** len(str(n)))
→ Ссылка