freeCodeCamp/curriculum/challenges/russian/08-coding-interview-prep/project-euler/problem-156-counting-digits...

2.3 KiB
Raw Blame History

id challengeType title videoUrl localeTitle
5900f4091000cf542c50ff1b 5 Problem 156: Counting Digits Задача 156: подсчет цифр

Description

Начиная с нуля, натуральные числа записываются в базе 10 следующим образом:

0 1 2 3 4 5 6 7 8 9 10 11 12 ....

Рассмотрим цифру d = 1. После того, как мы запишем каждое число n, мы обновим число тех, которые произошли, и назовем это число f (n, 1). Тогда первые значения для f (n, 1) следующие:

nf (n, 1) 00 11 21 31 41 51 61 71 81 91 102 114 125

Заметим, что f (n, 1) никогда не равно 3.

Итак, первые два решения уравнения f (n, 1) = n равны n = 0 и n = 1. Следующее решение - n = 199981. Таким же образом функция f (n, d) дает общее количество цифр d, записанных после того, как было записано число n.

Действительно, для каждой цифры d ≠ 0, 0 является первым решением уравнения f (n, d) = n. Пусть s (d) - сумма всех решений, для которых f (n, d) = n.

Вам дается, что s (1) = 22786974071. Найти Σ s (d) для 1 ≤ d ≤ 9. Примечание: если для некоторого n, f (n, d) = n для более чем одного значения d это значение n подсчитывается снова для каждого значения d, для которого е (п, д) = п.

Instructions

Tests

tests:
  - text: <code>euler156()</code> должен вернуть 21295121502550.
    testString: 'assert.strictEqual(euler156(), 21295121502550, "<code>euler156()</code> should return 21295121502550.");'

Challenge Seed

function euler156() {
  // Good luck!
  return true;
}

euler156();

Solution

// solution required