在 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP