Dados tres números enteros a , b y x , la tarea es obtener el múltiplo de x más cercano a a b .
Ejemplos:
Entrada: a = 5, b = 4, x = 3
Salida: 624
5 4 = 625 y 624 es el múltiplo de 3 más cercano a 625
Entrada: a = 349, b = 1, x = 4
Salida: 348
Acercarse:
- Calcula a b y guárdalo en una variable, digamos num .
- Luego, calcula ⌊num / x⌋ y guárdalo en un piso variable .
- Ahora el elemento más cercano a la izquierda será el más cercano a la izquierda = x * piso .
- Y el elemento más cercano a la derecha será la derecha más cercana = x * (piso + 1) .
- Finalmente, el número más cercano entre ellos será min(num – más cercano a la izquierda, más cercano a la derecha – num) .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; #define ll long long int // Function to return the multiple of x // which is closest to a^b ll getClosest(int a, int b, int x) { ll num = pow(a, b); int floor = num / x; // Closest element on the left ll numOnLeft = x * floor; // Closest element on the right ll numOnRight = x * (floor + 1); // If numOnLeft is closer than numOnRight if ((num - numOnLeft) < (numOnRight - num)) return numOnLeft; // If numOnRight is the closest else return numOnRight; } // Driver code int main() { int a = 349, b = 1, x = 4; cout << getClosest(a, b, x) << endl; return 0; }
Java
//Java implementation of the approach public class GFG { // Function to return the multiple of x // which is closest to a^b static long getClosest(int a, int b, int x) { long num = (long) Math.pow(a, b); int floor = (int) (num / x); // Closest element on the left long numOnLeft = x * floor; // Closest element on the right long numOnRight = x * (floor + 1); // If numOnLeft is closer than numOnRight if ((num - numOnLeft) < (numOnRight - num)) { return numOnLeft; } // If numOnRight is the closest else { return numOnRight; } } public static void main(String[] args) { int a = 349, b = 1, x = 4; System.out.println(getClosest(a, b, x)); } }
Python3
# Python3 implementation of the approach # Function to return the multiple of x # which is closest to a^b def getClosest(a, b, x) : num = pow(a, b) floor = num // x # Closest element on the left numOnLeft = x * floor # Closest element on the right numOnRight = x * (floor + 1) # If numOnLeft is closer than numOnRight if ((num - numOnLeft) < (numOnRight - num)): return numOnLeft # If numOnRight is the closest else : return numOnRight # Driver code if __name__ == "__main__" : a, b, x = 349, 1, 4 print(getClosest(a, b, x)) # This code is contributed by Ryuga
C#
// C# implementation of the approach using System; // #define ll long long int class GFG { // Function to return the multiple of x // which is closest to a^b static long getClosest(int a, int b, int x) { int num = (int)Math.Pow(a, b); int floor = (int)(num / x); // Closest element on the left int numOnLeft = (int)(x * floor); // Closest element on the right int numOnRight = (int)(x * (floor + 1)); // If numOnLeft is closer than numOnRight if ((num - numOnLeft) < (numOnRight - num)) return numOnLeft; // If numOnRight is the closest else return numOnRight; } // Driver code public static void Main() { int a = 349, b = 1, x = 4; Console.WriteLine(getClosest(a, b, x)); } } // This code is contributed // by Akanksha Rai
PHP
<?php // PHP implementation of the above approach // Function to return the multiple of x // which is closest to a^b function getClosest($a, $b, $x) { $num = pow($a, $b); $floor = (int)($num / $x); // Closest element on the left $numOnLeft = $x * $floor; // Closest element on the right $numOnRight = $x * ($floor + 1); // If numOnLeft is closer than numOnRight if (($num - $numOnLeft) < ($numOnRight - $num)) return $numOnLeft; // If numOnRight is the closest else return ceil($numOnRight); } // Driver code $a = 349; $b = 1; $x = 4; echo getClosest($a, $b, $x); // This code is contributed by jit_t ?>
Javascript
<script> // Javascript implementation of the approach // Function to return the multiple of x // which is closest to a^b function getClosest( a, b, x) { let num = Math.pow(a, b); let floor = Math.floor(num / x); // Closest element on the left let numOnLeft = x * floor; // Closest element on the right let numOnRight = x * (floor + 1); // If numOnLeft is closer than numOnRight if ((num - numOnLeft) < (numOnRight - num)) return numOnLeft; // If numOnRight is the closest else return numOnRight; } // Driver Code let a = 349, b = 1, x = 4; document.write(getClosest(a, b, x) + "</br>"); </script>
Producción:
348
Complejidad de tiempo: O(1)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por sarthak_ishu11 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA