Given an integer N, the task is to check if this number can be represented as the sum of two consecutive perfect cubes or not.
Examples:
Input: N = 35
Output: Yes
Explanation:
Since, 35 = 23 + 33, therefore the required answer is Yes.Input: N = 14
Output: No
Naive Approach: The simplest approach to solve the problem is to iterate from 1 to cube root of N and check if the sum of perfect cubes of any two consecutive numbers is equal to N or not. If found to be true, print “Yes”. Otherwise, print “No”.
Below is the implementation of the above approach:
C++
// C++ Program of the // above approach #include <bits/stdc++.h> using namespace std; // Function to check if a number // can be expressed as the sum of // cubes of two consecutive numbers bool isCubeSum( int n) { for ( int i = 1; i * i * i <= n; i++) { if (i * i * i + (i + 1) * (i + 1) * (i + 1) == n) return true ; } return false ; } // Driver Code int main() { int n = 35; if (isCubeSum(n)) cout << "Yes" ; else cout << "No" ; } |
Java
// Java program of the // above approach import java.util.*; class GFG{ // Function to check if a number // can be expressed as the sum of // cubes of two consecutive numbers static boolean isCubeSum( int n) { for ( int i = 1 ; i * i * i <= n; i++) { if (i * i * i + (i + 1 ) * (i + 1 ) * (i + 1 ) == n) return true ; } return false ; } // Driver Code public static void main(String[] args) { int n = 35 ; if (isCubeSum(n)) System.out.print( "Yes" ); else System.out.print( "No" ); } } // This code is contributed by Amit Katiyar |
Python3
# Python3 program of the # above approach # Function to check if a number # can be expressed as the sum of # cubes of two consecutive numbers def isCubeSum(n): for i in range ( 1 , int ( pow (n, 1 / 3 )) + 1 ): if (i * i * i + (i + 1 ) * (i + 1 ) * (i + 1 ) = = n): return True ; return False ; # Driver Code if __name__ = = '__main__' : n = 35 ; if (isCubeSum(n)): print ( "Yes" ); else : print ( "No" ); # This code is contributed by Amit Katiyar |
C#
// C# program of the // above approach using System; class GFG{ // Function to check if a number // can be expressed as the sum of // cubes of two consecutive numbers static bool isCubeSum( int n) { for ( int i = 1; i * i * i <= n; i++) { if (i * i * i + (i + 1) * (i + 1) * (i + 1) == n) return true ; } return false ; } // Driver Code public static void Main(String[] args) { int n = 35; if (isCubeSum(n)) Console.Write( "Yes" ); else Console.Write( "No" ); } } // This code is contributed by Amit Katiyar |
Javascript
<script> // Javascript Program of the // above approach // Function to check if a number // can be expressed as the sum of // cubes of two consecutive numbers function isCubeSum(n) { for ( var i = 1; i * i * i <= n; i++) { if (i * i * i + (i + 1) * (i + 1) * (i + 1) == n) return true ; } return false ; } // Driver Code var n = 35; if (isCubeSum(n)) document.write( "Yes" ); else document.write( "No" ); </script> |
Yes
Time Complexity: O(N1/3)
Auxiliary Space: O(1)
Efficient Approach: The above approach can be optimized based on the following observations:
- A number can be represented as the sum of the perfect cube of two consecutive numbers if the sum of the cube root of both consecutive numbers is equal to N.
- This can be checked by the formula:
- For example, if N = 35, then check if the equation below is equal to N or not:
Below is the implementation of the above approach:
C++
// C++ Program to // implement above approach #include <bits/stdc++.h> using namespace std; // Function to check that a number // is the sum of cubes of 2 // consecutive numbers or not bool isSumCube( int N) { int a = cbrt(N); int b = a - 1; // Condition to check if a // number is the sum of cubes of 2 // consecutive numbers or not return ((a * a * a + b * b * b) == N); } // Driver Code int main() { int i = 35; // Function call if (isSumCube(i)) { cout << "Yes" ; } else { cout << "No" ; } return 0; } |
Java
// Java program to implement // above approach class GFG{ // Function to check that a number // is the sum of cubes of 2 // consecutive numbers or not static boolean isSumCube( int N) { int a = ( int )Math.cbrt(N); int b = a - 1 ; // Condition to check if a // number is the sum of cubes of 2 // consecutive numbers or not return ((a * a * a + b * b * b) == N); } // Driver Code public static void main(String[] args) { int i = 35 ; // Function call if (isSumCube(i)) { System.out.print( "Yes" ); } else { System.out.print( "No" ); } } } // This code is contributed by Amit Katiyar |
Python3
# Python3 program to # implement above approach # Function to check that a number # is the sum of cubes of 2 # consecutive numbers or not def isSumCube(N): a = int ( pow (N, 1 / 3 )) b = a - 1 # Condition to check if a # number is the sum of cubes of 2 # consecutive numbers or not ans = ((a * a * a + b * b * b) = = N) return ans # Driver Code i = 35 # Function call if (isSumCube(i)): print ( "Yes" ) else : print ( "No" ) # This code is contributed by Shivam Singh |
C#
// C# program to implement // above approach using System; class GFG{ // Function to check that a number // is the sum of cubes of 2 // consecutive numbers or not static bool isSumCube( int N) { int a = ( int )Math.Pow(N, ( double ) 1 / 3); int b = a - 1; // Condition to check if a // number is the sum of cubes of 2 // consecutive numbers or not return ((a * a * a + b * b * b) == N); } // Driver Code public static void Main(String[] args) { int i = 35; // Function call if (isSumCube(i)) { Console.Write( "Yes" ); } else { Console.Write( "No" ); } } } // This code is contributed by 29AjayKumar |
Javascript
<script> // Javascript program to implement // above approach // Function to check that a number // is the sum of cubes of 2 // consecutive numbers or not function isSumCube(N) { var a = parseInt(Math.cbrt(N)); var b = a - 1; // Condition to check if a // number is the sum of cubes of 2 // consecutive numbers or not return ((a * a * a + b * b * b) == N); } // Driver Code var i = 35; // Function call if (isSumCube(i)) { document.write( "Yes" ); } else { document.write( "No" ); } // This code is contributed by todaysgaurav </script> |
Yes
Time Complexity: O(logN) because using cbrt function
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!