Dados cuatro enteros a , b , c y k . La tarea es encontrar el valor mínimo positivo de x tal que ax 2 + bx + c ≥ k .
Ejemplos:
Entrada: a = 3, b = 4, c = 5, k = 6
Salida: 1
Para x = 0, a * 0 + b * 0 + c = 5 < 6
Para x = 1, a * 1 + b * 1 + c = 3 + 4 + 5 = 12 > 6
Entrada: a = 2, b = 7, c = 6, k = 3
Salida: 0
Enfoque: La idea es utilizar la búsqueda binaria . El límite inferior para nuestra búsqueda será 0 ya que x tiene que ser el número entero positivo mínimo.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> 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
<?php // PHP implementation of the approach // Function to return the minimum positive // integer satisfying the given equation function 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 ?>
Javascript
<script> // Javascript implementation of the approach // Function to return the minimum positive // integer satisfying the given equation function 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 code let a = 3, b = 2, c = 4, k = 15; document.write(MinimumX(a, b, c, k)); // This code is contributed by patel2127 </script>
2
Complejidad de tiempo : O (logN)
Espacio Auxiliar : O(1)
Publicación traducida automáticamente
Artículo escrito por Sakshi_Srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA