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