Computer >> Máy Tính >  >> Lập trình >> C ++

Bội số thứ n trong danh sách bội số được sắp xếp của hai số trong C ++

Bạn được cung cấp ba số. Bạn cần tìm bội số n từ bội của hai số đầu tiên. Hãy xem một ví dụ để hiểu rõ hơn.

Đầu vào

x = 2
y = 3
n = 7

Đầu ra

10

N **** bội đầu tiên của 2 là 2 4 6 8 10 12 14

N **** bội đầu tiên của 3 **** là 3 6 9 12 15 18 21

Nếu gộp cả hai bội số và sắp xếp chúng ta được 2 3 4 6 8 9 10 12 14 15 18 21 và số thứ n từ danh sách là 10.

Thuật toán

  • Khởi tạo một vectơ để lưu trữ tất cả các bội số.
  • Tìm n **** bội đầu tiên của x và thêm chúng vào vectơ trên.
  • Bây giờ, hãy tìm bội số n đầu tiên của y.
    • Thêm chúng vào vectơ nếu nó chưa có trong vectơ.
  • Sắp xếp các bội số.
  • In bội số thứ n từ vectơ.

Thực hiện

Sau đây là cách thực hiện thuật toán trên trong 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;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

10