你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。
给定一个数字 n,找出可形成完整阶梯行的总行数。
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; }