Cho khoảng [l, r], tìm cặp (x, y) với l ≤ x, y ≤ r sao cho x chia hết y. Nếu có nhiều cặp, chỉ cần trả về một cặp.
Giải thuật
Giải O(1): Chọn x = l và y = 2*l. Vì tỷ số y/x nhỏ nhất là 2, và 2*l luôn nằm trong khoảng nếu l và 2*l đều ≤ r. Đây là cặp nhỏ nhất thỏa mãn.
Ví dụ minh họa
#include <iostream>
using namespace std;
void getPair(int l, int r) {
int x = l;
int y = 2 * l;
cout << "(" << x << ", " << y << ")" << endl;
}
int main() {
int l = 3, r = 6;
getPair(l, r);
}
Kết quả
(3, 6)