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

Tìm một cặp phân biệt (x, y) trong khoảng đã cho sao cho x chia y trong C ++

Ở đây chúng ta sẽ thấy một bài toán thú vị, chúng ta sẽ tìm một cặp (x, y), trong đó x và y nằm trong khoảng nên l <=x, y <=r, cặp này sẽ có một thuộc tính, giá trị của x chia cho y . Nếu có nhiều cặp có sẵn, thì chỉ chọn một cặp.

Chúng ta có thể giải quyết vấn đề này trong thời gian O (1), nếu chúng ta nhận được giá trị của giới hạn dưới l và 2l. Chúng ta biết rằng giá trị nhỏ nhất của y / x có thể là 2 và nếu một giá trị lớn hơn nào đó nằm trong phạm vi thì giá trị 2 sẽ nằm trong phạm vi đó. Và nếu chúng ta tăng x, nó cũng sẽ tăng gấp 2 lần, vì vậy l và 2l sẽ là cặp nhỏ nhất nằm trong khoảng đã cho.

Ví dụ

#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);
}

Đầu ra

(3, 6)