用 C++ 排列硬币


假设我们有 n 枚硬币,我们要用这些硬币摆成楼梯形状,每 k 行必须有正好 k 枚硬币。因此,如果我们有 n 枚硬币,那么我们必须找到可以摆出的完整楼梯行的总数。

所以,如果输入为 5,那么输出将为 2,因为使用 5 枚硬币我们可以制作两个完整的楼梯行,最后一个需要三枚,但我们必须留出 2 个。

*
**
**

可以使用以下公式直接完成此操作:

$$\frac{\sqrt{(8n+1)}-1}{2}$$

示例

让我们看以下实现以更好地理解:

 在线演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int arrangeCoins(int n) {
      return (sqrt(8*(long long)n+1)-1)/2;
   }
};
main(){
   Solution ob;
   cout << (ob.arrangeCoins(13));
}

输入

13

输出

4

更新于:10-6-2020

299 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.