# Count of numbers whose 0th and Nth bits are set

Given a positive integer **N**, the task is to count the numbers that can be represented with **N** bits and whose **0 ^{th}** and

**N**bits are set.

^{th}**Examples:**

Input:N = 2

Output:1

All possible 2-bit integers are 00, 01, 10 and 11.

Out of which only 11 has 0^{th}and N^{th}bit set.

Input:N = 4

Output:4

**Approach:** Out of the given **N** bits, only two bits need to be set i.e. the **0 ^{th}** and the

**N**bit. So, setting these 2 bits as 1 we are left with the rest

^{th}**N – 2**bits every single of which can either be

**0**or

**1**and there are

**2**ways of doing that.

^{N – 2}Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to return the count of n-bit ` `// numbers whose 0th and nth bits are set ` `int` `countNum(` `int` `n) ` `{ ` ` ` `if` `(n == 1) ` ` ` `return` `1; ` ` ` `int` `count = ` `pow` `(2, n - 2); ` ` ` `return` `count; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `n = 3; ` ` ` `cout << countNum(n); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java implementation of the approach ` `import` `java.io.*; ` ` ` `class` `GFG ` `{ ` ` ` `// Function to return the count of n-bit ` ` ` `// numbers whose 0th and nth bits are set ` ` ` `static` `int` `countNum(` `int` `n) ` ` ` `{ ` ` ` `if` `(n == ` `1` `) ` ` ` `return` `1` `; ` ` ` ` ` `int` `count = (` `int` `) Math.pow(` `2` `, n - ` `2` `); ` ` ` `return` `count; ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `main (String[] args) ` ` ` `{ ` ` ` `int` `n = ` `3` `; ` ` ` `System.out.println(countNum(n)); ` ` ` `} ` `} ` ` ` `// This code is contributed by ajit ` |

*chevron_right*

*filter_none*

## Python

`# Python3 implementation of the approach ` ` ` `# Function to return the count of n-bit ` `# numbers whose 0th and nth bits are set ` `def` `countNum(n): ` ` ` `if` `(n ` `=` `=` `1` `): ` ` ` `return` `1` ` ` `count ` `=` `pow` `(` `2` `, n ` `-` `2` `) ` ` ` `return` `count ` ` ` `# Driver code ` ` ` `n ` `=` `3` `print` `(countNum(n)) ` ` ` `# This code is contributed by mohit kumar 29 ` |

*chevron_right*

*filter_none*

## C#

`// C# implementation of the approach ` `using` `System; ` ` ` `class` `GFG ` `{ ` ` ` ` ` `// Function to return the count of n-bit ` ` ` `// numbers whose 0th and nth bits are set ` ` ` `static` `int` `countNum(` `int` `n) ` ` ` `{ ` ` ` `if` `(n == 1) ` ` ` `return` `1; ` ` ` ` ` `int` `count = (` `int` `) Math.Pow(2, n - 2); ` ` ` `return` `count; ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `static` `public` `void` `Main () ` ` ` `{ ` ` ` `int` `n = 3; ` ` ` `Console.WriteLine(countNum(n)); ` ` ` `} ` `} ` ` ` `// This code is contributed by AnkitRai01 ` |

*chevron_right*

*filter_none*

**Output:**

2

## Recommended Posts:

- Count total set bits in all numbers from 1 to n | Set 2
- Count total unset bits in all the numbers from 1 to N
- Count set bits in the Kth number after segregating even and odd from N natural numbers
- Count pairs (A, B) such that A has X and B has Y number of set bits and A+B = C
- Count pairs with set bits sum equal to K
- Count unset bits in a range
- Count number of set bits in a range using bitset
- Count of divisors having more set bits than quotient on dividing N
- Find a number X such that (X XOR A) is minimum and the count of set bits in X and B are equal
- Minimum number N such that total set bits of all numbers from 1 to N is at-least X
- Number of ways to change the XOR of two numbers by swapping the bits
- Count numbers < = N whose difference with the count of primes upto them is > = K
- Count numbers which are divisible by all the numbers from 2 to 10
- Count numbers which can be constructed using two numbers
- Count numbers that don't contain 3

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.