চারটি পূর্ণসংখ্যা a, b, c, k দেওয়া আছে। a x² + b x + c ≥ k সিদ্ধ করে এমন ন্যূনতম ধনাত্মক পূর্ণসংখ্যা x বের করুন। বাইনারি সার্চ (বাইсекশন) ব্যবহার করুন।
উদাহরণ
#include <iostream>
#include <climits>
using namespace std;
int getMinX(int a, int b, int c, int k) {
if (k <= c) return 0;
int left = 0, right = k - c, x = INT_MAX;
while (left <= right) {
int mid = (left + right) / 2;
long long val = 1LL*a*mid*mid + 1LL*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);
return 0;
}
আউটপুট
Minimum value of x is: 2