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