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

ตัวเลขลำดับที่ n ที่มีหลักอยู่ใน {0, 1, 2, 3, 4, 5} ใน C++

โจทย์

ตัวเลขที่สร้างจากหลัก {0, 1, 2, 3, 4, 5} คือ

0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, ฯลฯ

เราสามารถสร้างลำดับข้างต้นได้โดยใช้ 6 หลักแรก มาดูตัวอย่างการสร้างตัวเลข

 1 * 10 + 0 = 10
1 * 10 + 1 = 11
1 * 10 + 2 = 12
1 * 10 + 3 = 13
1 * 10 + 4 = 14
1 * 10 + 5 = 15

เช่นเดียวกัน ใช้กับตัวเลข 2, 3, 4, 5 คุณจะได้ 6 ตัวเลขถัดไปด้วย 2 โดยใช้รูปแบบข้างต้น และ 3 ต่อมา 4 และ 5

อัลกอริธึม

  • กำหนดตัวเลข n
  • กำหนดเวกเตอร์ (vector)
  • เขียนลูปที่วนรอบจาก 0 ถึง 5
    • เพิ่มตัวเลขทั้งหมดเข้าไปในเวกเตอร์
  • เรามีตัวเลข 6 ตัวแรกของลำดับแล้ว
  • เขียนลูปที่วนรอบจาก 0 ถึง n / 6
    • เขียนลูปที่วนรอบจาก 0 ถึง 5
      • สร้างตัวเลขที่เหลือด้วยรูปแบบที่อธิบายไว้ข้างต้น
      • เพิ่มเข้าไปในเวกเตอร์
  • คืนค่าตัวเลขลำดับที่ n จากลำดับ

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

ต่อไปนี้เป็นการนำไปใช้งานของอัลกอริธึมข้างต้นใน C++

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

int findNthNumber(int n) { 
    vector<int> numbers; 
    for (int i = 0; i < 6; i++) { 
        numbers.push_back(i); 
    } 
    for (int i = 0; i <= n / 6; i++) { 
        for (int j = 0; j < 6; j++) { 
            if ((numbers[i] * 10) != 0) { 
                numbers.push_back(numbers[i] * 10 + numbers[j]); 
            } 
        } 
    } 
    return numbers[n - 1]; 
} 

int main() { 
    int n = 7; 
    cout << findNthNumber(n) << endl; 
    return 0; 
}

ผลลัพธ์

หากคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังนี้

10