# Count odd and even Binomial Coefficients of N-th power

Given an integer **N**, the task is to count the number of even and odd binomial coefficients up to **N**^{th} power.

**Examples:**

Input:N = 4Output:

Odd: 2

Even: 3Explanation:

The binomial coefficients are as follows:^{4}C_{0}= 1,^{4}C_{1}= 4_{ },^{4}C_{2}= 6_{ },^{4}C_{3 }= 4_{ },^{4}C_{4}= 1.

Therefore, it can be observed that there exists exactly 2 odd and 3 even Binomial Coefficients.

Input:N = 5Output:

Odd: 4

Even: 2Explanation:

The binomial coefficients are as follows:^{5}C_{0}= 1,^{5}C_{1}= 5,^{5}C_{2}= 10,^{5}C_{3}= 10,^{5}C_{4}= 5,^{5}C_{5}= 1.

Therefore, there are 4 odd and 2 even coefficients.

**Solution Approach:** The idea to solve this problem is using Bit Manipulation. Find the **set bits** in the given integer **N**. Count of **odd binomial coefficients **are equal to **2 ^ Count of Set Bits in N**. Similarly the count of **even binomial coefficients** is equal to **(N + 1 – 2 ^ Count of Set Bits in N)**.

Below is the implementation of the above approach:

## C++

`// C++ program for the above approach` `#include <iostream>` `#include <math.h>` `using` `namespace` `std;` `// Function to count set bits in` `// binary representation of number N` `int` `countSetBits(` `int` `N)` `{` ` ` `int` `count = 0;` ` ` `// Count set bits in N` ` ` `while` `(N) {` ` ` `N = N & (N - 1);` ` ` `count++;` ` ` `}` ` ` `// Return the final count` ` ` `return` `count;` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `N = 4;` ` ` `int` `bits = countSetBits(N);` ` ` `// Print odd Binomial coefficients` ` ` `cout << ` `"Odd "` ` ` `<< ` `": "` `<< ` `pow` `(2, bits) << ` `"\n"` `;` ` ` `// Print even Binomial coefficients` ` ` `cout << ` `"Even "` ` ` `<< ` `": "` `<< N + 1 - ` `pow` `(2, bits)` ` ` `<< ` `"\n"` `;` ` ` `return` `0;` `}` |

## Java

`// Java program for the above approach` `import` `java.util.*;` ` ` `class` `GFG{` ` ` `// Function to count set bits in` `// binary representation of number N` `static` `int` `countSetBits(` `int` `N)` `{` ` ` `int` `count = ` `0` `;` ` ` ` ` `// Count set bits in N` ` ` `while` `(N != ` `0` `)` ` ` `{` ` ` ` ` `N = N & (N - ` `1` `);` ` ` `count++;` ` ` `}` ` ` ` ` `// Return the final count` ` ` `return` `count;` `}` ` ` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `N = ` `4` `;` ` ` ` ` `int` `bits = countSetBits(N);` ` ` ` ` `// Print odd Binomial coefficients` ` ` `System.out.println(` `"Odd "` `+ ` `": "` `+` ` ` `(` `int` `)(Math.pow(` `2` `, bits)));` ` ` ` ` `// Print even Binomial coefficients` ` ` `System.out.println(` `"Even "` `+ ` `": "` `+` ` ` `(N + ` `1` `- (` `int` `)(Math.pow(` `2` `, bits))));` `}` `}` `// This code is contributed by susmitakundugoaldanga` |

## Python3

`# Python3 program for the above approach` `# Function to count set bits in` `# binary representation of number N` `def` `countSetBits(N: ` `int` `) ` `-` `> ` `int` `:` ` ` `count ` `=` `0` ` ` `# Count set bits in N` ` ` `while` `(N):` ` ` `N ` `=` `N & (N ` `-` `1` `)` ` ` `count ` `+` `=` `1` ` ` `# Return the final count` ` ` `return` `count` `# Driver Code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `N ` `=` `4` ` ` `bits ` `=` `countSetBits(N)` ` ` `# Print odd Binomial coefficients` ` ` `print` `(` `"Odd : {}"` `.` `format` `(` `pow` `(` `2` `, bits)))` ` ` `# Print even Binomial coefficients` ` ` `print` `(` `"Even : {}"` `.` `format` `(N ` `+` `1` `-` `pow` `(` `2` `, bits)))` `# This code is contributed by sanjeev2552` |

## C#

`// C# program for the above approach` `using` `System;` ` ` `class` `GFG{` ` ` `// Function to count set bits in` `// binary representation of number N` `static` `int` `countSetBits(` `int` `N)` `{` ` ` `int` `count = 0;` ` ` ` ` `// Count set bits in N` ` ` `while` `(N != 0)` ` ` `{` ` ` `N = N & (N - 1);` ` ` `count++;` ` ` `}` ` ` ` ` `// Return the final count` ` ` `return` `count;` `}` ` ` `// Driver Code` `public` `static` `void` `Main()` `{` ` ` `int` `N = 4;` ` ` `int` `bits = countSetBits(N);` ` ` ` ` `// Print odd Binomial coefficients` ` ` `Console.WriteLine(` `"Odd "` `+ ` `": "` `+` ` ` `(` `int` `)(Math.Pow(2, bits)));` ` ` ` ` `// Print even Binomial coefficients` ` ` `Console.WriteLine(` `"Even "` `+ ` `": "` `+` ` ` `(N + 1 - (` `int` `)(Math.Pow(2, bits))));` `}` `}` `// This code is contributed by sanjoy_62` |

## Javascript

`<script>` `// Javascript program for the above approach` `// Function to count set bits in` `// binary representation of number N` `function` `countSetBits(N)` `{` ` ` `let count = 0;` ` ` ` ` `// Count set bits in N` ` ` `while` `(N != 0)` ` ` `{` ` ` `N = N & (N - 1);` ` ` `count++;` ` ` `}` ` ` ` ` `// Return the final count` ` ` `return` `count;` `}` ` ` `// Driver Code` `let N = 4;` `let bits = countSetBits(N);` `// Print odd Binomial coefficients` `document.write(` `"Odd "` `+ ` `": "` `+` ` ` `(Math.pow(2, bits)) + ` `"<br/>"` `);` `// Print even Binomial coefficients` `document.write(` `"Even "` `+ ` `": "` `+` ` ` `(N + 1 - (Math.pow(2, bits))));` ` ` `// This code is contributed by splevel62` `</script>` |

**Output:**

Odd : 2 Even : 3

**Time Complexity:** O(1)**Auxiliary Space:** O(1)