yaworsw/euler-manager

View on GitHub
data/problems/156.yml

Summary

Maintainability
Test Coverage
---
:id: 156
:name: Counting Digits
:url: https://projecteuler.net/problem=156
:content: "Starting from zero the natural numbers are written down in base 10 like
  this:  \n0 1 2 3 4 5 6 7 8 9 10 11 12....\n\nConsider the digit <var>d</var>=1.
  After we write down each number <var>n</var>, we will update the number of ones
  that have occurred and call this number <var>f</var>(<var>n</var>,1). The first
  values for <var>f</var>(<var>n</var>,1), then, are as follows:\n\n| <var>n</var>
  | <var>f</var>(<var>n</var>,1) |\n| 0 | 0 |\n| 1 | 1 |\n| 2 | 1 |\n| 3 | 1 |\n|
  4 | 1 |\n| 5 | 1 |\n| 6 | 1 |\n| 7 | 1 |\n| 8 | 1 |\n| 9 | 1 |\n| 10 | 2 |\n| 11
  | 4 |\n| 12 | 5 |\n\nNote that <var>f</var>(<var>n</var>,1) never equals 3.  \nSo
  the first two solutions of the equation <var>f</var>(<var>n</var>,1)=<var>n</var>
  are <var>n</var>=0 and <var>n</var>=1. The next solution is <var>n</var>=199981.\n\nIn
  the same manner the function <var>f</var>(<var>n,d</var>) gives the total number
  of digits <var>d</var> that have been written down after the number <var>n</var>
  has been written.  \nIn fact, for every digit <var>d</var> ≠ 0, 0 is the first solution
  of the equation <var>f</var>(<var>n,d</var>)=<var>n</var>.\n\nLet <var>s</var>(<var>d</var>)
  be the sum of all the solutions for which <var>f</var>(<var>n,d</var>)=<var>n</var>.
  \ \nYou are given that <var>s</var>(1)=22786974071.\n\nFind ∑ <var>s</var>(<var>d</var>)
  for 1 ≤ d ≤ 9.\n\nNote: if, for some <var>n</var>, <var>f</var>(<var>n,d</var>)=<var>n</var>
  for more than one value of <var>d</var> this value of <var>n</var> is counted again
  for every value of <var>d</var> for which <var>f</var>(<var>n,d</var>)=<var>n</var>.\n\n"