LeetCode 441.排列硬币(C++)

你总共有 枚硬币,你需要将它们摆成一个阶梯形状,第 行就必须正好有 枚硬币。

给定一个数字 n,找出可形成完整阶梯行的总行数。

是一个非负整数,并且在32位有符号整型的范围内。

示例 1:

n = 5

硬币可排列成以下几行:
¤
¤ ¤
¤ ¤

因为第三行不完整,所以返回2.

示例 2:

n = 8

硬币可排列成以下几行:
¤
¤ ¤
¤ ¤ ¤
¤ ¤

因为第四行不完整,所以返回3.

#include <iostream>

using namespace std;

int arrangeCoins(int n) {
    long long nn = n;
    return (-1 + sqrt(1 + 8 * nn)) / 2;
}

int main()
{
    cout << arrangeCoins(1804289383);

    system("PAUSE");
    return 0;
}
#include <iostream>

using namespace std;

int arrangeCoins(int n) {
    for (long long i = 1; i <= n; ++i) {
        if (i * (i + 1) / 2 > n)
            return i - 1;
    }
}

int main()
{
    cout << arrangeCoins(1804289383);

    system("PAUSE");
    return 0;
}
原文地址:https://www.cnblogs.com/Mayfly-nymph/p/10547944.html