e-olymp 7228. Сколько шестерок?

Задача

Сколько раз будет использована цифра $6$, если записать подряд последовательные натуральные числа от $a$ до $b$?

Входные данные

Два натуральных числа $a$ и $b$ [latex](1 ≤ a, b ≤ 10^9)[/latex].

Выходные данные

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

Тесты

 

Ввод Вывод
1 5 256 46
2 56 110 16
3 27357 43577 5852
4 368325775 56 296285528
5 584937543 984938576 420000314

Код

Решение

Выписав и посчитав количества шестёрок от $1$ до [latex]10, 100, 1000, …[/latex] Мы обнаружим закономерность, они равны [latex]1, 20, 300, …[/latex] соответственно.
Теперь разберёмся, как их нужно комбинировать.
Для этого в цикле пройдёмся по каждой из цифр числа и полученные результаты просуммируем.
Если ведущая цифра в разряде меньше шести, то мы просто умножаем её на соответствующее количество шестёрок в данном разряде.
Если она совпадает, то к полученному выше произведению добавим остаток от деления на данный разряд исходного числа [latex]+ 1[/latex]. Так как для всех этих чисел в самом начале стояла $6$ и не забудем нулевое.
А если ведущая цифра больше шести, то к первому произведению добавим количество цифр в предыдущем разряде. Исключением будет первый разряд, так как он не имеет предыдущего. Не сложно догадаться, что если в первом разряде цифра больше шести, то её он пройдёт один раз.
Тогда, в ответ мы выдадим разность количества шестерок без внешней границы.

Ссылки

e-olymp
ideone