从 n 个数字中获取数字的计数,超时错误(一本书有多少页?来自 codewars)

Getting the count of digits from n numbers , timeout error (How many pages in a book? from codewars)

问题:给定摘要,找出这本书的页数 n。

例子 如果输入summary=25,那么输出一定是n=17: 1到17的数字一共25位:1234567891011121314151617.

所有输入都有效。

我目前的解决方案

function amountOfPages(summary){


    let n=1;   let arrKc=[1]
        
        while((arrKc.join('').toString().length)!=summary){
         
           arrKc.push( n.toString())
         
            n++
        }
        
   return n
  
}

所有测试都通过了,但出现如下所示的超时错误

这是我的代码,

我在这里看到一个模式来计算位数

9 + 9 * 10 power 1 * 2 + 9 * 10 power 2 * 3 + ...+ 9 * 10 power n-1 * n 我的解决方案是基于上述模式

function initialLoad() {
      document.getElementById("outcome").innerHTML = "Answer: "+  amountOfPages(25);
}

function amountOfPages(summary) {
        var n = summary;
        var totalNumbersSoFar = 0;
        var pagesSoFar = 0;
        var ninthDigit = "9";
        while (parseInt(ninthDigit) < (n / ninthDigit.length)) {
                var numbersInRange = Math.pow(10, ninthDigit.length - 1) * 9;
                pagesSoFar += numbersInRange * ninthDigit.length;
                n -= numbersInRange;
                totalNumbersSoFar += numbersInRange;
                ninthDigit += "9";
        };
        return ((summary - pagesSoFar) / ninthDigit.length) + totalNumbersSoFar;
    };
 <HTML>
        <HEAD>
        </HEAD>
        <BODY id="outcome" onload="initialLoad()">
            <h1>

        </h1>
        </BODY>
    </HTML>