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

หมายเลขสุภาพ N-th ใน C++


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

ชุดตัวเลขสุภาพคือ

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

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

อัลกอริทึม

  • อัลกอริทึมของตัวเลขสุภาพที่ 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