Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số lịch sự (Polite Number) thứ N C++

Số lịch sự: số nguyên dương viết được thành tổng ≥ 2 số tự nhiên liên tiếp.

Dãy: 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17...

(Các số KHÔNG phải lịch sự chính là lũy thừa của 2: 1, 2, 4, 8, 16...)

Công thức

Số lịch sự thứ n: n + log₂(n + log₂(n)) (làm tròn xuống)

Triển khai C++

#include <bits/stdc++.h>
using namespace std;

int nthPoliteNumber(int n) {
    double x = n;
    double log2 = log(2.0);
    double val = x + log(x + log(x) / log2) / log2;
    return (int)val;
}

int main() {
    cout << nthPoliteNumber(10) << endl; // 14
    return 0;
}

Kết quả

14