从n个数字,超时错误中获取数字计数(书中有多少页?

发布于 2025-01-21 21:01:32 字数 646 浏览 0 评论 0原文

问题:鉴于摘要,请找到本书中的页数。

例子 如果输入为摘要= 25,则输出必须为n = 17:数字1至17的总数为25位:123456789101112121314151617。

所有输入都是有效的。

我当前的解决方案

function amountOfPages(summary){


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

所有测试都通过了,但是我得到了一个超时错误,如下所示,如下所示,

”

Problem: Given the summary, find the number of pages n the book has.

Example
If the input is summary=25, then the output must be n=17: The numbers 1 to 17 have 25 digits in total: 1234567891011121314151617.

All inputs will be valid.

My current solution

function amountOfPages(summary){


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

All the tests passes but i get a timeout error as shown below

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余生再见 2025-01-28 21:01:32

这是我的代码,

我在这里看到一个模式以找到数字计数

9 + 9 * 10功率1 * 2 + 9 * 10功率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>

Here is my code,

I see a pattern here to find the digits count

9 + 9 * 10 power 1 * 2 + 9 * 10 power 2 * 3 + ...+ 9 * 10 power n-1 * n
My solution is based on the above pattern

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>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文