Dados dos números enteros N y K , la tarea es comprobar si N se puede convertir en un cubo perfecto después de sumar o restar K a él.
Ejemplos:
Entrada: N = 7, K = 1
Salida: Sí
7 + 1 = 8 que es un cubo perfecto (2 3 = 8)
Entrada: N = 5, K = 4
Salida: Sí
5 – 4 = 1 que es un cubo perfecto (1 3 = 1)
Enfoque: La forma más sencilla de resolver este problema es verificar si (N + K) o (N – K) es un cubo perfecto o no.
- Comprueba si (N + K) es un cubo perfecto o no
- Si no, comprueba si (N – K) es un cubo perfecto o no.
- Si ninguno de los dos es un cubo perfecto, escriba «No», de lo contrario, escriba «Sí».
- Para verificar si un número es un cubo perfecto o no , la forma más fácil es encontrar el cubo del valor del piso de la raíz cúbica del número y luego verificar si este cubo es igual al número o no.
if(N3 == (floor(∛N))3) Then N is a perfect cube
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; // Function to check if a number is // a perfect Cube or not bool isPerfectCube(int x) { int cr = round(cbrt(x)); return (cr * cr * cr == x); } void canBePerfectCube(int N, int K) { if (isPerfectCube(N + K) || isPerfectCube(N - K)) cout << "Yes\n"; else cout << "No\n"; } // Driver code int main() { int N = 7, K = 1; canBePerfectCube(N, K); N = 5, K = 4; canBePerfectCube(N, K); N = 7, K = 2; canBePerfectCube(N, K); return 0; }
Java
// Java implementation of the above approach class GFG { // Function to check if a number is // a perfect Cube or not static boolean isPerfectCube(int x) { int cr = (int)Math.cbrt(x); return (cr * cr * cr == x); } static void canBePerfectCube(int N, int K) { if (isPerfectCube(N + K) || isPerfectCube(N - K) == true) System.out.println("Yes"); else System.out.println("No"); } // Driver code public static void main (String[] args) { int N = 7; int K = 1; canBePerfectCube(N, K); N = 5; K = 4; canBePerfectCube(N, K); N = 7; K = 2; canBePerfectCube(N, K); } } // This code is contributed by Yash_R
Python3
# Python3 implementation of the above approach # Function to check if a number is # a perfect Cube or not def isPerfectCube(x) : cr = int(x ** (1/3)); return (cr * cr * cr == x); def canBePerfectCube(N, K) : if (isPerfectCube(N + K) or isPerfectCube(N - K)) : print("Yes"); else : print("No"); # Driver code if __name__ == "__main__" : N = 7; K = 1; canBePerfectCube(N, K); N = 5; K = 4; canBePerfectCube(N, K); N = 7; K = 2; canBePerfectCube(N, K); # This code is contributed by Yash_R
C#
// C# implementation of the above approach using System; class GFG { // Function to check if a number is // a perfect Cube or not static bool isPerfectCube(int x) { int cr = (int)Math.Cbrt(x); return (cr * cr * cr == x); } static void canBePerfectCube(int N, int K) { if (isPerfectCube(N + K) || isPerfectCube(N - K) == true) Console.WriteLine("Yes"); else Console.WriteLine("No"); } // Driver code public static void Main (string[] args) { int N = 7; int K = 1; canBePerfectCube(N, K); N = 5; K = 4; canBePerfectCube(N, K); N = 7; K = 2; canBePerfectCube(N, K); } } // This code is contributed by AnkitRai01
Javascript
<script> // Javascript implementation of the above approach // Function to check if a number is // a perfect Cube or not function isPerfectCube(x) { var cr = Math.round(Math.cbrt(x)); return (cr * cr * cr == x); } function canBePerfectCube(N, K) { if (isPerfectCube(N + K) || isPerfectCube(N - K)) document.write("Yes<br>"); else document.write("No<br>"); } // Driver code var N = 7, K = 1; canBePerfectCube(N, K); N = 5, K = 4; canBePerfectCube(N, K); N = 7, K = 2; canBePerfectCube(N, K); // This code is contributed by rrrtnx. </script>
Producción:
Yes Yes No
Complejidad de tiempo : O(1)
Complejidad espacial : O(1)