在 C++ 中找到給定範圍內的一個不同的數對 (x, y),使得 x 整除 y。
在這裡我們將看到一個有趣的問題,我們將找到一個數對 (x, y),其中 x 和 y 在範圍內,所以 l <= x, y <= r,該數對將具有一個屬性,即 x 的值整除 y。如果有多個可用數對,則只選擇一個。
如果我們得到下限 l 和 2l 的值,我們可以在 O(1) 時間內解決此問題。我們知道 y/x 的最小值可以是 2,如果範圍內存在某個更大的值,則 2 將在範圍內。如果我們增加 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); }
輸出
(3, 6)
廣告