用 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

更新於:10-6-2020

299 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.