因此,如果输入是5,则输出将是2,因为使用5个硬币,我们可以形成两行完整的starecase行,最后一行需要三行,但我们必须保留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