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

• Difficulty Level : Medium
• Last Updated : 10 Nov, 2021

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 ` `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

 ``

Output:

`6`

Time Complexity :

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Recommended Articles
Page :