1.9 KiB
1.9 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 5900f4091000cf542c50ff1b | 問題 156: 数字を数え上げる | 5 | 301787 | problem-156-counting-digits |
--description--
0 から始めて自然数を 10 進数で書くと、次のようになります。
0 1 2 3 4 5 6 7 8 9 10 11 12....
桁の数字 d = 1 について考えます。 それぞれの数 n を書いた後、それまでに出現した 1 の個数を更新します。この個数を f(n, 1) とします。 最初のいくつかの f(n, 1) の値は次のとおりです。
n |
f(n, 1) |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
| 6 | 1 |
| 7 | 1 |
| 8 | 1 |
| 9 | 1 |
| 10 | 2 |
| 11 | 4 |
| 12 | 5 |
f(n, 1) が決して 3 にならないことに注目してください。
つまり、式 f(n, 1) = n の最初の 2 つの解は n = 0 と n = 1 です。 その次の解は n = 199981 です。 同様に、関数 $f(n, d) は、n が書かれた時点で桁の数字 d が出現した総数を導くものとします。
実のところ、d ≠ 0 のすべての数字 d について、式 f(n, d) = n の最初の解は 0 です。 f(n, d) = n の解の総和を s(d) とします。
s(1) = 22786974071 が与えられます。 1 ≤ d ≤ 9 のとき、\sum{s(d)} を求めなさい。
注: 一部の n について、複数の d の値に対して f(n, d) = n となった場合、この n 値は f(n, d) = n である d の値ごとに再びカウントされます。
--hints--
countingDigits() は 21295121502550 を返す必要があります。
assert.strictEqual(countingDigits(), 21295121502550);
--seed--
--seed-contents--
function countingDigits() {
return true;
}
countingDigits();
--solutions--
// solution required