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

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 `

Output:

```6
```

Time Complexity : Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.