Loading [MathJax]/jax/output/HTML-CSS/jax.js

在 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

更新于: 2019-12-19

267 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告