 GeeksforGeeks App
Open App Browser
Continue

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

Examples:

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

Input: 5
Output: 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 nth fibonacci 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``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;``  ``f = 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;``}`

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

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

## 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;``        ``f = 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.`

## PHP

 ``

## Javascript

 ``

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.
Auxiliary Space: O(n)

This article is contributed by Shubham Bansal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up