Open In App

Count number of steps to cover a distance if steps can be taken in powers of 2

Improve
Improve
Like Article
Like
Save
Share
Report

Given a distance K to cover, the task is to find the minimum steps required to cover the distance if steps can be taken in powers of 2 like 1, 2, 4, 8, 16……..
Examples : 
 

Input : K = 9
Output : 2

Input : K = 343 
Output : 6


 


The minimum steps required can be calculated by reducing K by the highest power of 2 in each step which can be obtained by counting no. of set bits in the binary representation of a number.
Below is the implementation of the above approach: 
 

C++

// C++ program to count the minimum number of steps
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to count the minimum number of steps
int getMinSteps(int K)
{
   // __builtin_popcount() is a C++ function to
   // count the number of set bits in a number
   return __builtin_popcount(k);
}
 
// Driver Code
int main()
{
    int n = 343;
     
    cout << getMinSteps(n)<< '\n';
 
    return 0;
}

                    

Java

// Java program to count minimum number of steps
import java.io.*;
 
class GFG
{
     
    // Function to count the minimum number of steps
    static int getMinSteps(int K)
    {
        // count the number of set bits in a number
        return Integer.bitCount(K);
    }
     
    // Driver Code
    public static void main (String[] args)
    {
        int n = 343;
         
        System.out.println(getMinSteps(n));
    }
}
 
// This code is contributed by AnkitRai01

                    

Python3

# Python 3 implementation of the approach
 
# Function to count the minimum number of steps
def getMinSteps(K) :
     
    # bin(K).count("1") is a Python3 function to
    # count the number of set bits in a number
    return bin(K).count("1")
 
# Driver Code
n = 343
print(getMinSteps(n))
 
# This code is contributed by
# divyamohan123

                    

C#

// C# program to count minimum number of steps
using System;
     
class GFG
{
     
    // Function to count the minimum number of steps
    static int getMinSteps(int K)
    {
        // count the number of set bits in a number
        return countSetBits(K);
    }
     
    static int countSetBits(int x)
    {
        int setBits = 0;
        while (x != 0)
        {
            x = x & (x - 1);
            setBits++;
        }
        return setBits;
    }
     
    // Driver Code
    public static void Main (String[] args)
    {
        int n = 343;
         
        Console.WriteLine(getMinSteps(n));
    }
}
 
// This code is contributed by 29AjayKumar

                    

Javascript

<script>
    // Javascript program to count minimum number of steps
     
    // Function to count the minimum number of steps
    function getMinSteps(K)
    {
        // count the number of set bits in a number
        return countSetBits(K);
    }
       
    function countSetBits(x)
    {
        let setBits = 0;
        while (x != 0)
        {
            x = x & (x - 1);
            setBits++;
        }
        return setBits;
    }
     
    let n = 343;
           
      document.write(getMinSteps(n));
     
    // This code is contributed by decode2207.
</script>

                    

Output: 
6

 

Time Complexity : O(log(n))

Auxiliary Space: O(1)
 



Last Updated : 10 Nov, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads