 GeeksforGeeks App
Open App Browser
Continue

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

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:
For x = 0, a * 0 + b * 0 + c = 5 < 6
For x = 1, a * 1 + b * 1 + c = 3 + 4 + 5 = 12 > 6

Input: a = 2, b = 7, c = 6, k = 3
Output:

Recommended Practice

Brute Force Approach:

The brute force approach to solve this problem would be to iterate over all possible values of x starting from 0 and check if ax^2 + bx + c is greater than or equal to k. If the condition is satisfied for any value of x, we return that x as the minimum positive integer satisfying the given equation.

Below is the implementation of the above approach:

## C++

 `#include ``using` `namespace` `std;` `// Function to return the minimum positive``// integer satisfying the given equation``int` `MinimumX(``int` `a, ``int` `b, ``int` `c, ``int` `k)``{``    ``int` `x = 0;``    ``while``(a*x*x + b*x + c < k) {``        ``x++;``    ``}``    ``return` `x;``}` `// Driver code``int` `main()``{``    ``int` `a = 3, b = 2, c = 4, k = 15;``    ``cout << MinimumX(a, b, c, k);` `    ``return` `0;``}`

## Java

 `import` `java.util.*;` `public` `class` `Main {``    ` `    ``// Function to return the minimum positive``    ``// integer satisfying the given equation``    ``public` `static` `int` `MinimumX(``int` `a, ``int` `b, ``int` `c, ``int` `k) {``        ``int` `x = ``0``;``        ``while``(a*x*x + b*x + c < k) {``            ``x++;``        ``}``        ``return` `x;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args) {``        ``int` `a = ``3``, b = ``2``, c = ``4``, k = ``15``;``        ``System.out.println(MinimumX(a, b, c, k));``    ``}``}`

## C#

 `using` `System;` `public` `class` `Program``{``    ``// Function to return the minimum positive``    ``// integer satisfying the given equation``    ``static` `int` `MinimumX(``int` `a, ``int` `b, ``int` `c, ``int` `k)``    ``{``        ``int` `x = 0;``        ``while` `(a * x * x + b * x + c < k)``        ``{``            ``x++;``        ``}``        ``return` `x;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `a = 3, b = 2, c = 4, k = 15;``        ``Console.WriteLine(MinimumX(a, b, c, k));``    ``}``}`

Output

`2`

Time Complexity: O(K)
Auxiliary Space: O(1)

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++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the minimum positive``// integer satisfying the given equation``int` `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 code``int` `main()``{``    ``int` `a = 3, b = 2, c = 4, k = 15;``    ``cout << MinimumX(a, b, c, k);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GFG``{``    ` `// Function to return the minimum positive``// integer satisfying the given equation``static` `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 code``public` `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

 `# Python3 implementation of the approach` `# Function to return the minimum positive``# integer satisfying the given equation``def` `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 code``a, b, c, k ``=` `3``, ``2``, ``4``, ``15``print``(MinimumX(a, b, c, k))` `# This code is contributed by mohit kumar`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{``    ` `// Function to return the minimum positive``// integer satisfying the given equation``static` `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 code``public` `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

 ` (``\$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``?>`

## Javascript

 ``

Output

`2`

Time Complexity : O(log(k-c))
Auxiliary Space : O(1)

My Personal Notes arrow_drop_up