# Count ways to express ‘n’ as sum of odd integers

Given an positive integer n. Count total number of ways to express ‘n’ as sum of odd positive integers.

Input:4Output:3ExplanationThere are only three ways to write 4 as sum of odd integers: 1. 1 + 3 2. 3 + 1 3. 1 + 1 + 1 + 1Input:5Output:5

**Simple approach** is to find recursive nature of problem. The number ‘n’ can be written as sum of odd integers from either (n-1)^{th} number or (n-2)^{th} number. Let the total number of ways to write ‘n’ be ways(n). The value of ‘ways(n)’ can be written by recursive formula as follows:

ways(n) = ways(n-1) + ways(n-2)

The above expression is actually the expression for Fibonacci numbers. Therefore problem is reduced to find the n^{th} fibonnaci number.

ways(1) = fib(1) = 1 ways(2) = fib(2) = 1 ways(3) = fib(2) = 2 ways(4) = fib(4) = 3

## C++

`// C++ program to count ways to write ` `// number as sum of odd integers ` `#include<iostream> ` `using` `namespace` `std; ` ` ` `// Function to calculate n'th Fibonacci number ` `int` `fib(` `int` `n) ` `{ ` ` ` `/* Declare an array to store Fibonacci numbers. */` ` ` `int` `f[n+1]; ` ` ` `int` `i; ` ` ` ` ` `/* 0th and 1st number of the series are 0 and 1*/` ` ` `f[0] = 0; ` ` ` `f[1] = 1; ` ` ` ` ` `for` `(i = 2; i <= n; i++) ` ` ` `{ ` ` ` `/* Add the previous 2 numbers in the series ` ` ` `and store it */` ` ` `f[i] = f[i-1] + f[i-2]; ` ` ` `} ` ` ` ` ` `return` `f[n]; ` `} ` ` ` `// Return number of ways to write 'n' ` `// as sum of odd integers ` `int` `countOddWays(` `int` `n) ` `{ ` ` ` `return` `fib(n); ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `n = 4; ` ` ` `cout << countOddWays(n) << ` `"\n"` `; ` ` ` ` ` `n = 5; ` ` ` `cout << countOddWays(n); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java program to count ways to write ` `// number as sum of odd integers ` `import` `java.util.*; ` ` ` `class` `GFG { ` ` ` `// Function to calculate n'th Fibonacci number ` `static` `int` `fib(` `int` `n) { ` ` ` ` ` `/* Declare an array to store Fibonacci numbers. */` ` ` `int` `f[] = ` `new` `int` `[n + ` `1` `]; ` ` ` `int` `i; ` ` ` ` ` `/* 0th and 1st number of the series are 0 and 1*/` ` ` `f[` `0` `] = ` `0` `; ` ` ` `f[` `1` `] = ` `1` `; ` ` ` ` ` `for` `(i = ` `2` `; i <= n; i++) { ` ` ` ` ` `/* Add the previous 2 numbers in the series ` ` ` `and store it */` ` ` `f[i] = f[i - ` `1` `] + f[i - ` `2` `]; ` ` ` `} ` ` ` ` ` `return` `f[n]; ` `} ` ` ` `// Return number of ways to write 'n' ` `// as sum of odd integers ` `static` `int` `countOddWays(` `int` `n) ` `{ ` ` ` `return` `fib(n); ` `} ` ` ` `// Driver code ` `public` `static` `void` `main(String[] args) { ` ` ` ` ` `int` `n = ` `4` `; ` ` ` `System.out.print(countOddWays(n) + ` `"\n"` `); ` ` ` ` ` `n = ` `5` `; ` ` ` `System.out.print(countOddWays(n)); ` `} ` `} ` ` ` `// This code is contributed by Anant Agarwal. ` |

*chevron_right*

*filter_none*

## Python3

`# Python code to count ways to write ` `# number as sum of odd integers ` ` ` `# Function to calculate n'th ` `# Fibonacci number ` `def` `fib( n ): ` ` ` ` ` `# Declare a list to store ` ` ` `# Fibonacci numbers. ` ` ` `f` `=` `list` `() ` ` ` ` ` `# 0th and 1st number of the ` ` ` `# series are 0 and 1 ` ` ` `f.append(` `0` `) ` ` ` `f.append(` `1` `) ` ` ` ` ` `i ` `=` `2` ` ` `while` `i<n` `+` `1` `: ` ` ` ` ` `# Add the previous 2 numbers ` ` ` `# in the series and store it ` ` ` `f.append(f[i` `-` `1` `] ` `+` `f[i` `-` `2` `]) ` ` ` `i ` `+` `=` `1` ` ` `return` `f[n] ` ` ` `# Return number of ways to write 'n' ` `# as sum of odd integers ` `def` `countOddWays( n ): ` ` ` `return` `fib(n) ` ` ` `# Driver code ` `n ` `=` `4` `print` `(countOddWays(n)) ` `n ` `=` `5` `print` `(countOddWays(n)) ` ` ` `# This code is contributed by "Sharad_Bhardwaj" ` |

*chevron_right*

*filter_none*

## C#

`// C# program to count ways to write ` `// number as sum of odd integers ` `using` `System; ` ` ` `class` `GFG { ` ` ` ` ` `// Function to calculate n'th ` ` ` `// Fibonacci number ` ` ` `static` `int` `fib(` `int` `n) { ` ` ` ` ` `/* Declare an array to store ` ` ` `Fibonacci numbers. */` ` ` `int` `[]f = ` `new` `int` `[n + 1]; ` ` ` `int` `i; ` ` ` ` ` `/* 0th and 1st number of the ` ` ` `series are 0 and 1*/` ` ` `f[0] = 0; ` ` ` `f[1] = 1; ` ` ` ` ` `for` `(i = 2; i <= n; i++) ` ` ` `{ ` ` ` ` ` `/* Add the previous 2 numbers ` ` ` `in the series and store it */` ` ` `f[i] = f[i - 1] + f[i - 2]; ` ` ` `} ` ` ` ` ` `return` `f[n]; ` ` ` `} ` ` ` ` ` `// Return number of ways to write 'n' ` ` ` `// as sum of odd integers ` ` ` `static` `int` `countOddWays(` `int` `n) ` ` ` `{ ` ` ` `return` `fib(n); ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `Main() ` ` ` `{ ` ` ` `int` `n = 4; ` ` ` `Console.WriteLine(countOddWays(n)); ` ` ` ` ` `n = 5; ` ` ` `Console.WriteLine(countOddWays(n)); ` ` ` `} ` `} ` ` ` `// This code is contributed by vt_m. ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// PHP program to count ways to write ` `// number as sum of odd integers ` ` ` `// Function to calculate n'th ` `// Fibonacci number ` `function` `fib(` `$n` `) ` `{ ` ` ` ` ` `// Declare an array to ` ` ` `// store Fibonacci numbers. ` ` ` `$f` `= ` `array` `(); ` ` ` `$i` `; ` ` ` ` ` `// 0th and 1st number of the ` ` ` `// series are 0 and 1 ` ` ` `$f` `[0] = 0; ` ` ` `$f` `[1] = 1; ` ` ` ` ` `for` `(` `$i` `= 2; ` `$i` `<= ` `$n` `; ` `$i` `++) ` ` ` `{ ` ` ` ` ` `// Add the previous 2 ` ` ` `// numbers in the series ` ` ` `// and store it ` ` ` `$f` `[` `$i` `] = ` `$f` `[` `$i` `- 1] + ` ` ` `$f` `[` `$i` `- 2]; ` ` ` `} ` ` ` ` ` `return` `$f` `[` `$n` `]; ` `} ` ` ` `// Return number of ways to write 'n' ` `// as sum of odd integers ` `function` `countOddWays( ` `$n` `) ` `{ ` ` ` `return` `fib(` `$n` `); ` `} ` ` ` ` ` `// Driver Code ` ` ` `$n` `= 4; ` ` ` `echo` `countOddWays(` `$n` `) , ` `"\n"` `; ` ` ` `$n` `= 5; ` ` ` `echo` `countOddWays(` `$n` `); ` ` ` `// This code is contributed by anuj_67. ` `?> ` |

*chevron_right*

*filter_none*

Output:

3 5

**Note:** *The time complexity of the above implementation is O(n). It can be further optimized up-to O(Logn) time using Fibonacci function optimization by Matrix Exponential*.

This article is contributed by Shubham Bansal. 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.

## Recommended Posts:

- Count ways to express even number ‘n’ as sum of even integers
- Count of different ways to express N as the sum of 1, 3 and 4
- Different ways to represent N as sum of K non-zero integers
- Number of ways to form a heap with n distinct integers
- Count integers in a range which are divisible by their euler totient value
- Count possible ways to construct buildings
- Count ways to reach the nth stair using step 1, 2 or 3
- Count ways to distribute m items among n people
- Count ways to form minimum product triplets
- Count ways to spell a number with repeated digits
- Count ways to divide circle using N non-intersecting chord | Set-2
- Minimum numbers needed to express every integer below N as a sum
- Number of arrays of size N whose elements are positive integers and sum is K
- Ways to represent a number as a sum of 1's and 2's
- Number of ways to reach the end of matrix with non-zero AND value