El menor número que se debe sumar o restar de N para convertirlo en un cubo perfecto

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 cercano

Entrada: 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 :

  1. Consigue el número.
  2. Encuentra la raíz cúbica del número y convierte el resultado en un número entero.
  3. 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)) .
  4. Luego encuentra el cubo de este número, que será el cubo perfecto antes de N.
  5. Encuentre la raíz del cubo perfecto después de N, es decir, el techo (raíz cúbica (N)) .
  6. Luego encuentra el cubo de este número, que será el cubo perfecto después de N.
  7. Compruebe si el cubo del valor del suelo es el más cercano a N o al valor del techo.
  8. 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

Publicación traducida automáticamente

Artículo escrito por Code_r y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *