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

ตัวคูณลำดับที่ N ในรายการตัวคูณที่เรียงลำดับของสองตัวเลขใน C++

โจทย์

คุณได้รับตัวเลขสามตัว คุณต้องหาตัวคูณลำดับที่ n จากตัวคูณของตัวเลขสองตัวแรก มาดูตัวอย่างเพื่อเข้าใจมากขึ้น

อินพุต

 x = 2 y = 3 n = 7

เอาต์พุต

 10

ตัวคูณ n แรกของ 2 คือ 2 4 6 8 10 12 14

ตัวคูณ n แรกของ 3 คือ 3 6 9 12 15 18 21

ถ้ารวมตัวคูณทั้งสองและเรียงลำดับ เราจะได้ 2 3 4 6 8 9 10 12 14 15 18 21 และตัวเลขลำดับที่ n จากรายการคือ 10

อัลกอริธึม

  • กำหนดเวกเตอร์เพื่อเก็บตัวคูณทั้งหมด
  • หาตัวคูณ n แรกของ x และเพิ่มเข้าไปในเวกเตอร์ข้างต้น
  • ตอนนี้หาตัวคูณ n แรกของ y
    • เพิ่มเข้าไปในเวกเตอร์ถ้ายังไม่มีอยู่ในเวกเตอร์
  • เรียงลำดับตัวคูณ
  • พิมพ์ตัวคูณลำดับที่ n จากเวกเตอร์

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

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

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

int findNthMultiple(int x, int y, int n) { 
    vector<int> multiples; 
    for (int i = 1; i <= n; i++) { 
        multiples.push_back(x * i); 
    } 
    sort(multiples.begin(), multiples.end()); 
    for (int i = 1, k = n; i <= n && k; i++) { 
        if (!binary_search(multiples.begin(), multiples.end(), y * i)) { 
            multiples.push_back(y * i); 
            sort(multiples.begin(), multiples.end()); 
        } 
    } 
    return multiples[n - 1]; 
} 

int main() { 
    int x = 2, y = 3, n = 7; 
    cout << findNthMultiple(x, y, n) << endl; 
    return 0; 
}

ผลลัพธ์

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

10