Open In App

Number of times the largest Perfect Cube can be subtracted from N

Given a number N, at every step, subtract the largest perfect cube( ? N) from N. Repeat this step while N > 0. The task is to count the number of steps that can be performed. 

Examples:  



Input: N = 100 
Output:
First step, 100 – (4 * 4 * 4) = 100 – 64 = 36 
Second step, 36 – (3 * 3 * 3) = 36 – 27 = 9 
Third step, 9 – (2 * 2 * 2) = 9 – 8 = 1 
Fourth step, 1 – (1 * 1 * 1) = 1 – 1 = 0

Input: N = 150 
Output:
First step, 150 – (5 * 5 * 5) = 150 – 125 = 25 
Second step, 25 – (2 * 2 * 2) = 25 – 8 = 17 
Third step, 17 – (2 * 2 * 2) = 17 – 8 = 9 
Fourth step, 9 – (2 * 2 * 2) = 9 – 8 = 1 
Fifth step, 1 – (1 * 1 * 1) = 1 – 1 = 0 



Approach:  

N = N - ((int) ?N)3

Below is the implementation of the above approach:  




// C++ implementation of the approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the count of steps
int countSteps(int n)
{
 
    // Variable to store the count of steps
    int steps = 0;
 
    // Iterate while N > 0
    while (n) {
 
        // Get the largest perfect cube
        // and subtract it from N
        int largest = cbrt(n);
        n -= (largest * largest * largest);
 
        // Increment steps
        steps++;
    }
 
    // Return the required count
    return steps;
}
 
// Driver code
int main()
{
    int n = 150;
    cout << countSteps(n);
 
    return 0;
}




// Java implementation of the approach
class GFG{
  
// Function to return the count of steps
static int countSteps(int n)
{
  
    // Variable to store the count of steps
    int steps = 0;
  
    // Iterate while N > 0
    while (n > 0) {
  
        // Get the largest perfect cube
        // and subtract it from N
        int largest = (int) Math.cbrt(n);
        n -= (largest * largest * largest);
  
        // Increment steps
        steps++;
    }
  
    // Return the required count
    return steps;
}
  
// Driver code
public static void main(String[] args)
{
    int n = 150;
    System.out.print(countSteps(n));
}
}
 
// This code is contributed by 29AjayKumar




# Python3 implementation of the approach
from math import floor
 
# Function to return the count of steps
def countSteps(n):
 
    # Variable to store the count of steps
    steps = 0
 
    # Iterate while N > 0
    while (n):
 
        # Get the largest perfect cube
        # and subtract it from N
        largest = floor(n**(1/3))
        n -= (largest * largest * largest)
 
        # Increment steps
        steps += 1
 
    # Return the required count
    return steps
 
# Driver code
n = 150
print(countSteps(n))
 
# This code is contributed by mohit kumar 29




// C# implementation of the approach
using System;
 
class GFG{
   
// Function to return the count of steps
static int countSteps(int n)
{
   
    // Variable to store the count of steps
    int steps = 0;
   
    // Iterate while N > 0
    while (n > 0) {
   
        // Get the largest perfect cube
        // and subtract it from N
        int largest = (int) Math.Pow(n,(double)1/3);
        n -= (largest * largest * largest);
   
        // Increment steps
        steps++;
    }
   
    // Return the required count
    return steps;
}
   
// Driver code
public static void Main(String[] args)
{
    int n = 150;
    Console.Write(countSteps(n));
}
}
 
// This code is contributed by PrinciRaj1992




<script>
 
// JavaScript implementation of the approach
 
// Function to return the count of steps
function countSteps(n)
{
     
    // Variable to store the count of steps
    let steps = 0;
 
    // Iterate while N > 0
    while (n)
    {
         
        // Get the largest perfect cube
        // and subtract it from N
        let largest = Math.floor(Math.cbrt(n));
        n -= (largest * largest * largest);
 
        // Increment steps
        steps++;
    }
 
    // Return the required count
    return steps;
}
 
// Driver code
let n = 150;
 
document.write(countSteps(n));
 
// This code is contributed by Manoj.
 
</script>

Output: 
5

 

Time complexity: O(logn), as using inbuilt cbrt function
Auxiliary space: O(1)


Article Tags :