C++ 中的第 N 個禮貌數
禮貌數是指可以表示為 2 個或更多連續正數之和的正數。
禮貌數的序列為
3 5 6 7 9 10 11 12 13 14...
有一個公式可以用來找出第 n 個禮貌數。該公式為 n + log2(n + log2(n))。預設日誌的以 e 為底。我們需要使用底數為 2 進行計算。將預設日誌結果除以 log(2) 以獲得以 e 為底的日誌值。
演算法
- 第 n 個禮貌數的演算法非常簡單。
- 初始化數字 N。
- 使用上述公式計算第 n 個禮貌數。
- 確保在計算第 n 個禮貌數之前將 n 的值增加 1。
實現
以下是使用 C++ 實現上述演算法
#include <bits/stdc++.h>
using namespace std;
double getNthPoliteNumber(double n) {
n += 1;
return n + (log((n + (log(n) / log(2.0))))) / log(2.0);
}
int main() {
double n = 10;
cout << (int)getNthPoliteNumber(n) << endl;
return 0;
}輸出
如果執行以上程式碼,將會得到以下結果。
14
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP