Find minimum positive integer x such that a(x^2) + b(x) + c >= k

25 May, 2022
Given four integers a, b, c and k. The task is to find the minimum positive value of x such that ax2 + bx + c ≥ k.Examples:  
Input: a = 3, b = 4, c = 5, k = 6 Output: 1 For x = 0, a * 0 + b * 0 + c = 5 < 6 For x = 1, a * 1 + b * 1 + c = 3 + 4 + 5 = 12 > 6Input: a = 2, b = 7, c = 6, k = 3 Output: 0  
 
Approach: The idea is to use binary search. The lower limit for our search will be 0 since x has to be minimum positive integer.Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // Function to return the minimum positive// integer satisfying the given equationint MinimumX(int a, int b, int c, int k){    int x = INT_MAX;     if (k <= c)        return 0;     int h = k - c;    int l = 0;     // Binary search to find the value of x    while (l <= h) {        int m = (l + h) / 2;        if ((a * m * m) + (b * m) > (k - c)) {            x = min(x, m);            h = m - 1;        }        else if ((a * m * m) + (b * m) < (k - c))            l = m + 1;        else            return m;    }     // Return the answer    return x;} // Driver codeint main(){    int a = 3, b = 2, c = 4, k = 15;    cout << MinimumX(a, b, c, k);     return 0;}
// Java implementation of the approachclass GFG{     // Function to return the minimum positive// integer satisfying the given equationstatic int MinimumX(int a, int b, int c, int k){    int x = Integer.MAX_VALUE;     if (k <= c)        return 0;     int h = k - c;    int l = 0;     // Binary search to find the value of x    while (l <= h)    {        int m = (l + h) / 2;        if ((a * m * m) + (b * m) > (k - c))        {            x = Math.min(x, m);            h = m - 1;        }        else if ((a * m * m) + (b * m) < (k - c))            l = m + 1;        else            return m;    }     // Return the answer    return x;} // Driver codepublic static void main(String[] args){    int a = 3, b = 2, c = 4, k = 15;    System.out.println(MinimumX(a, b, c, k));}} // This code is contributed by Code_Mech.
# Python3 implementation of the approach # Function to return the minimum positive# integer satisfying the given equationdef MinimumX(a, b, c, k):     x = 10**9     if (k <= c):        return 0     h = k - c    l = 0     # Binary search to find the value of x    while (l <= h):        m = (l + h) // 2        if ((a * m * m) + (b * m) > (k - c)):            x = min(x, m)            h = m - 1         elif ((a * m * m) + (b * m) < (k - c)):            l = m + 1        else:            return m     # Return the answer    return x # Driver codea, b, c, k = 3, 2, 4, 15print(MinimumX(a, b, c, k)) # This code is contributed by mohit kumar
// C# implementation of the approachusing System; class GFG{     // Function to return the minimum positive// integer satisfying the given equationstatic int MinimumX(int a, int b, int c, int k){    int x = int.MaxValue;     if (k <= c)        return 0;     int h = k - c;    int l = 0;     // Binary search to find the value of x    while (l <= h)    {        int m = (l + h) / 2;        if ((a * m * m) + (b * m) > (k - c))        {            x = Math.Min(x, m);            h = m - 1;        }        else if ((a * m * m) + (b * m) < (k - c))            l = m + 1;        else            return m;    }     // Return the answer    return x;} // Driver codepublic static void Main(){    int a = 3, b = 2, c = 4, k = 15;    Console.Write(MinimumX(a, b, c, k));}} // This code is contributed by Akanksha Rai
<?php// PHP implementation of the approach // Function to return the minimum positive// integer satisfying the given equationfunction MinimumX($a, $b, $c, $k){    $x = PHP_INT_MAX;     if ($k <= $c)        return 0;     $h = $k - $c;    $l = 0;     // Binary search to find the value of x    while ($l <= $h)    {        $m = floor(($l + $h) / 2);        if (($a * $m * $m) +            ($b * $m) > ($k - $c))        {            $x = min($x, $m);            $h = $m - 1;        }        else if (($a * $m * $m) +                 ($b * $m) < ($k - $c))            $l = $m + 1;        else            return $m;    }     // Return the answer    return $x;} // Driver code$a = 3; $b = 2; $c = 4; $k = 15; echo MinimumX($a, $b, $c, $k); // This code is contributed by Ryuga?>
<script>// Javascript implementation of the approach // Function to return the minimum positive// integer satisfying the given equationfunction MinimumX(a,b,c,k){    let x = Number.MAX_VALUE;       if (k <= c)        return 0;       let h = k - c;    let l = 0;       // Binary search to find the value of x    while (l <= h)    {        let m = Math.floor((l + h) / 2);        if ((a * m * m) + (b * m) > (k - c))        {            x = Math.min(x, m);            h = m - 1;        }        else if ((a * m * m) + (b * m) < (k - c))            l = m + 1;        else            return m;    }       // Return the answer    return x;} // Driver codelet a = 3, b = 2, c = 4, k = 15;document.write(MinimumX(a, b, c, k)); // This code is contributed by patel2127</script>
2
 
Time Complexity : O(logN)
Auxiliary Space : O(1)
mohit kumar 29
ankthon
Code_Mech
Akanksha_Rai
patel2127
jayanth_mkv
Binary Search
Algorithms
Searching
Searching
Binary Search
Algorithms
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
What is Hashing | A Complete Tutorial
Find if there is a path between two vertices in an undirected graph
How to Start Learning DSA?
Complete Roadmap To Learn DSA From Scratch
Types of Complexity Classes | P, NP, CoNP, NP hard and NP complete
Binary Search
Maximum and minimum of an array using minimum number of comparisons
Linear Search
K'th Smallest/Largest Element in Unsorted Array | Set 1
Search an element in a sorted and rotated array