【问题标题】:What is (sqrt(1+8*long(num)) - 1)/2?什么是 (sqrt(1+8*long(num)) - 1)/2?
【发布时间】:2020-07-14 14:40:47
【问题描述】:

您好,我正在寻找 leetcode 问题的解决方案,我知道如何解决该问题,但其他人提交了此解决方案,我不明白它是如何工作的。

问题是在第 k 行有 k 个硬币的情况下,你可以用 n 个硬币形成多少叠。 https://leetcode.com/explore/challenge/card/july-leetcoding-challenge/544/week-1-july-1st-july-7th/3377/

返回上面的公式有效,谁能给我解释一下?

【问题讨论】:

    标签: math dynamic-programming


    【解决方案1】:
    • 已知前 N 个自然数之和 (1 + 2 + 3 + ... + N) 等于 N(N+1)2

    • 游戏说,如果你有 6 个硬币,你必须以这种方式堆叠它们:

            x              (1)
      
            x    x         (2)
      
            x    x     x   (3)
      

      而 6 等于 1 + 2 + 3。 如果给你 K 个硬币并且你知道 N(N+1)/2 = K 那么你知道你可以有 N 行。现在的问题是,给定 K,你怎么能找到 N?

    让我们算一下:

    • N(N+1)/2 = K
    • N^2 + N = 2*K
    • N^2 + N -2*K = 0
    • N = (-1 + sqrt(1 + 8K))/2
    • N = -1/2 + sqrt(1/4 + 2K)
    • N = sqrt(2*K + 0.25) - 0.5

    【讨论】:

    • 谢谢!我现在明白了
    猜你喜欢
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    相关资源
    最近更新 更多