Задача "Сколько шестерок?"

Sasha432091820

Новичок
Пользователь
Ноя 26, 2023
1
0
1
Условие:
Сколько раз будет использована цифра 6, если подряд записать последовательные натуральные числа от a до b?

Входные данные:
Два натуральных числа a и b (1 ≤ a, b ≤ 10^9).

Исходные данные:
Число цифр 6 в последовательных натуральных числах от a до b .

Лимит времени 1 сек

Мой код выгледит так:
Python:
a, b = map(int, input().split())
count = 0

for i in range(a, b+1):
    if '6' in str(i):
        count+=str(i).count('6')

print(count)

Этот код превышает лимит.Можете ли вы написать код который будет влазить в лимит.Или хотябы дать совет
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 650
472
83
на SO вам уже дали совет
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
971
219
43
20
Москва
Python:
def cnt(n):
    if n < 10:
        return int(n > 5)

    u = len(str(n)) - 1
    p = u * 10 ** (u - 1)

    t = int(str(n)[0])
    d = int(str(n)[1:])
    nxt = cnt(d)

    if t < 6:
        return p * t + nxt

    if t > 6:
        return (10 + u * t) * 10 ** (u - 1) + nxt

    return p * t + nxt + 1 + d


def count6(a, b):
    return cnt(b) - cnt(a) + (str(a)[-1] == "6")

cnt6(10**3, 10**7)

Вот рабочий код, но это упор на математику, и по этому объяснять слишком долго
 
Последнее редактирование:

Форум IT Специалистов