在 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)
广告