Блог пользователя talgat09

Автор talgat09, 12 лет назад, По-русски

Доброго времени суток! поршу помочь с задачей как можно ее решить ???

  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

»
12 лет назад, скрыть # |
← Rev. 3  
Проголосовать: нравится 0 Проголосовать: не нравится

[deleted]

»
12 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Попробуй поразрядно подсчитать, сколько раз будет встречаться каждая цифра.

»
12 лет назад, скрыть # |
← Rev. 3  
Проголосовать: нравится 0 Проголосовать: не нравится

А можно так:

1) Пусть у нас есть функция f(l,r) считающая сумму цифр на отрезке [l,r].

2) Если l не делится на 10, то увеличим его пока оно не будет делится на 10 и прибавим пройденные суммы "в лоб". Аналогично с r(только остаток от деления на 10 должен быть равен 9).

3) Теперь у нас есть отрезок вида [10p;10q — 1]. Но тогда ответ на запрос это f(p,q)+45*(q-p) (45 — это сумма цифр от 0 до 9)

4) Терминальное условие рекурсии r<10. Тогда считаем в лоб.

Вот рабочий код

»
12 лет назад, скрыть # |
← Rev. 3  
Проголосовать: нравится -8 Проголосовать: не нравится

deleted