# 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 = 9Output :2Input :K = 343Output :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; ` `} ` |

*chevron_right*

*filter_none*

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

*chevron_right*

*filter_none*

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

*chevron_right*

*filter_none*

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

*chevron_right*

*filter_none*

**Output:**

6

**Time Complexity : **

## Recommended Posts:

- Minimize the number of steps required to reach the end of the array
- Maximum steps to transform 0 to X with bitwise AND
- Minimum steps to reach target by a Knight | Set 2
- Minimum steps in which N can be obtained using addition or subtraction at every step
- A variation of Rat in a Maze : multiple steps or jumps allowed
- Find minimum steps required to reach the end of a matrix | Set 2
- Game Theory in Balanced Ternary Numeral System | (Moving 3k steps at a time)
- Count numbers in a range having GCD of powers of prime factors equal to 1
- Minimum number of given powers of 2 required to represent a number
- Exact Cover Problem and Algorithm X | Set 1
- Shortest Superstring Problem | Set 2 (Using Set Cover)
- Exact Cover Problem and Algorithm X | Set 2 (Implementation with DLX)
- Represent n as the sum of exactly k powers of two | Set 2
- Powers of 2 to required sum
- Count number of trailing zeros in Binary representation of a number using Bitset

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.