Dado un número N , encuentre el número mínimo que se debe sumar o restar de N para convertirlo en un cubo perfecto . Si el número se va a sumar, imprímalo con un signo +, de lo contrario, si el número se va a restar, imprímalo con un signo -.
Ejemplos:
Entrada: N = 25
Salida: 2
El cubo perfecto más cercano antes de 25 = 8
El cubo perfecto más cercano después de 25 = 27
Por lo tanto, es necesario sumar 2 a 25 para obtener el cubo perfecto más cercanoEntrada: N = 40
Salida: -13
El cubo perfecto más cercano antes de 40 = 25
El cubo perfecto más cercano después de 40 = 64
Por lo tanto, es necesario restar 13 de 40 para obtener el cubo perfecto más cercano
Enfoque :
- Consigue el número.
- Encuentra la raíz cúbica del número y convierte el resultado en un número entero.
- Después de convertir el valor doble a entero, este contendrá la raíz del cubo perfecto antes de N, es decir, piso (raíz cúbica (N)) .
- Luego encuentra el cubo de este número, que será el cubo perfecto antes de N.
- Encuentre la raíz del cubo perfecto después de N, es decir, el techo (raíz cúbica (N)) .
- Luego encuentra el cubo de este número, que será el cubo perfecto después de N.
- Compruebe si el cubo del valor del suelo es el más cercano a N o al valor del techo.
- Si el cubo del valor del piso es el más cercano a N, imprima la diferencia con un signo -. De lo contrario, imprima la diferencia entre el cubo del valor del techo y N con un signo +.
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 Least number int nearest(int n) { // Get the perfect cube // before and after N int prevCube = cbrt(n); int nextCube = prevCube + 1; prevCube = prevCube * prevCube * prevCube; nextCube = nextCube * nextCube * nextCube; // Check which is nearest to N int ans = (n - prevCube) < (nextCube - n) ? (prevCube - n) : (nextCube - n); // return the result return ans; } // Driver code int main() { int n = 25; cout << nearest(n) << endl; n = 27; cout << nearest(n) << endl; n = 40; cout << nearest(n) << endl; return 0; }
Java
// Java implementation of the approach class GFG { // Function to return the Least number static int nearest(int n) { // Get the perfect cube // before and after N int prevCube = (int)Math.cbrt(n); int nextCube = prevCube + 1; prevCube = prevCube * prevCube * prevCube; nextCube = nextCube * nextCube * nextCube; // Check which is nearest to N int ans = (n - prevCube) < (nextCube - n) ? (prevCube - n) : (nextCube - n); // return the result return ans; } // Driver code public static void main (String[] args) { int n = 25; System.out.println(nearest(n)); n = 27; System.out.println(nearest(n)) ; n = 40; System.out.println(nearest(n)) ; } } // This code is contributed by Yash_R
Producción:
2 0 -13