Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เลขสุภาพ (Polite Number) ลำดับที่ N ใน C++

โจทย์

เลขสุภาพ (Polite number) คือจำนวนบวกที่สามารถเขียนเป็นผลรวมของจำนวนบวกติดต่อกัน 2 ตัวขึ้นไป

ลำดับของเลขสุภาพคือ

3 5 6 7 9 10 11 12 13 14...

มีสูตรสำหรับหาเลขสุภาพลำดับที่ n สูตรคือ n + log2(n + log2(n)) ฟังก์ชัน log เริ่มต้นคำนวณด้วยฐาน e เราต้องคำนวณด้วยฐาน 2 แบ่งผลลัพธ์ log เริ่มต้นด้วย log(2) เพื่อให้ได้ค่า log ฐาน 2

อัลกอริธึม

  • อัลกอริธึมสำหรับหาเลขสุภาพลำดับที่ n เป็นเรื่องตรงไปตรงมา
  • กำหนดตัวเลข N
  • ใช้สูตรข้างต้นเพื่อคำนวณเลขสุภาพลำดับที่ n
  • อย่าลืมเพิ่มค่า n ขึ้น 1 ก่อนคำนวณเลขสุภาพลำดับที่ n

การนำไปใช้งาน

ต่อไปนี้เป็นการนำไปใช้งานของอัลกอริธึมข้างต้นใน 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