在 C++ 中查找最小的正整数 x,使得 a(x^2) + b(x) + c >= k
假设我们有四个整数 a、b、c 和 k。我们必须找到最小的正值 x,使得以下等式满足 -
𝑎𝑥2+𝑏𝑥+𝑐 ≥𝑘
如果 a = 3,b = 4,c = 5 且 k = 6,则输出将为 1
为了解决这个问题,我们将使用二分查找法。下限将为 0,因为 x 必须是最小的正整数。
示例
#include<iostream> using namespace std; int getMinX(int a, int b, int c, int k) { int x = INT8_MAX; if (k <= c) return 0; int right = k - c; int left = 0; while (left <= right) { int mid = (left + right) / 2; int val = (a * mid * mid) + (b * mid); if (val > (k - c)) { x = min(x, mid); right = mid - 1; } else if (val < (k - c)) left = mid + 1; else return mid; } return x; } int main() { int a = 3, b = 2, c = 4, k = 15; cout << "Minimum value of x is: " << getMinX(a, b, c, k); }
输出 -
Minimum value of x is: 2
广告