用 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