用 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
广告
数据结构
网络技术
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP