मान लीजिए हमारे पास चार पूर्णांक a, b, c और k हैं। हमें न्यूनतम धनात्मक मान x ढूंढना है, जैसे कि निम्नलिखित समीकरण संतुष्ट हो -
ax² + bx + c ≥ k
यदि a = 3, b = 4, c = 5 और k = 6, तो आउटपुट 1 होगा
इसे हल करने के लिए, हम बाईसेक्शन दृष्टिकोण का उपयोग करेंगे। निचली सीमा 0 होगी क्योंकि x एक न्यूनतम धनात्मक पूर्णांक होना चाहिए।
उदाहरण
#includeusing 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