এখানে আমরা একটি আকর্ষণীয় সমস্যা দেখব, যেখানে আমাদের একটি জোড়া (x, y) খুঁজে বের করতে হবে, যাতে x এবং y দেওয়া রেঞ্জে থাকে অর্থাৎ l ≤ x, y ≤ r, এবং এই জোড়ার বৈশিষ্ট্য হবে x, y কে ভাগ করত পারে। যদি একাধিক জোড়া থাকে, তবে শুধুমাত্র একটি বেছে নেওয়া হবে।
সমাধানের পদ্ধতি
এই সমস্যাটি O(1) সময়ে সমাধান করা যায়। যদি নিম্ন সীমা l এবং 2l পাওয়া যায়। আমরা জানি y/x-এর ন্যূনতম মান হতে পারে ২, এবং যদি রেঞ্জে কোনো বড় মান থাকে তবে ২ও রেঞ্জে থাকবে। এবং যদি x বাড়ানো হয়, তবে 2x-ও বাড়বে, তাই l এবং 2l হল দেওয়া রেঞ্জে পড়ে যাওয়ার ন্যূনতম জোড়া।
উদাহরণ কোড
#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);
return 0;
}
আউটপুট
(3, 6)