Find the sum of first N odd Fibonacci numbers

Given a number, N. Find the sum of first N odd Fibonacci numbers.
Note: The answer can be very large so print the answer modulo 10^9+7.
Examples:
Input : N = 3 Output : 5 Explanation : 1 + 1 + 3 Input : 6 Output : 44 Explanation : 1 + 1 + 3 + 5 + 13 + 21
Approach: Odd Fibonacci series is:
1, 1, 3, 5, 13, 21, 55, 89......
Prefix sum of odd Fibonacci series is:
1, 2, 5, 10, 23, 44, 99, 188.....
The formula for the sum of first N odd Fibonacci numbers is:
a(n) = a(n-1) + 4*a(n-2) - 4*a(n-3) + a(n-4) - a(n-5) for n>5
Below is the implementation of the above approach:
C++
// CPP program to Find the sum of// first N odd Fibonacci numbers#include <bits/stdc++.h>using namespace std;#define mod 1000000007// Function to calculate sum of first// N odd Fibonacci numberslong long sumOddFibonacci(int n){ long long Sum[n + 1]; // base values Sum[0] = 0; Sum[1] = 1; Sum[2] = 2; Sum[3] = 5; Sum[4] = 10; Sum[5] = 23; for (int i = 6; i <= n; i++) { Sum[i] = ((Sum[i - 1] + (4 * Sum[i - 2]) % mod - (4 * Sum[i - 3]) % mod + mod) % mod + (Sum[i - 4] - Sum[i - 5] + mod) % mod) % mod; } return Sum[n];}// Driver codeint main(){ long long n = 6; cout << sumOddFibonacci(n); return 0;} |
Java
// Java program to Find the sum of // first N odd Fibonacci numbers import java.io.*;class GFG { static int mod =1000000007; // Function to calculate sum of first // N odd Fibonacci numbers static int sumOddFibonacci(int n) { int Sum[]=new int[n + 1]; // base values Sum[0] = 0; Sum[1] = 1; Sum[2] = 2; Sum[3] = 5; Sum[4] = 10; Sum[5] = 23; for (int i = 6; i <= n; i++) { Sum[i] = ((Sum[i - 1] + (4 * Sum[i - 2]) % mod - (4 * Sum[i - 3]) % mod + mod) % mod + (Sum[i - 4] - Sum[i - 5] + mod) % mod) % mod; } return Sum[n]; } // Driver code public static void main (String[] args) { int n = 6; System.out.println(sumOddFibonacci(n)); }//This Code is Contributed by Sachin } |
Python3
# Python3 program to Find the sum of # first N odd Fibonacci numbers mod = 1000000007 ;# Function to calculate sum of # first N odd Fibonacci numbers def sumOddFibonacci(n): Sum=[0]*(n + 1); # base values Sum[0] = 0; Sum[1] = 1; Sum[2] = 2; Sum[3] = 5; Sum[4] = 10; Sum[5] = 23; for i in range(6,n+1): Sum[i] = ((Sum[i - 1] + (4 * Sum[i - 2]) % mod - (4 * Sum[i - 3]) % mod + mod) % mod + (Sum[i - 4] - Sum[i - 5] + mod) % mod) % mod; return Sum[n]; # Driver code n = 6; print(sumOddFibonacci(n)); # This code is contributed by mits |
C#
// C# program to Find the sum of // first N odd Fibonacci numbers using System;public class GFG{static int mod =1000000007; // Function to calculate sum of first // N odd Fibonacci numbers static int sumOddFibonacci(int n) { int []Sum=new int[n + 1]; // base values Sum[0] = 0; Sum[1] = 1; Sum[2] = 2; Sum[3] = 5; Sum[4] = 10; Sum[5] = 23; for (int i = 6; i <= n; i++) { Sum[i] = ((Sum[i - 1] + (4 * Sum[i - 2]) % mod - (4 * Sum[i - 3]) % mod + mod) % mod + (Sum[i - 4] - Sum[i - 5] + mod) % mod) % mod; } return Sum[n]; } // Driver code static public void Main (){ int n = 6; Console.WriteLine(sumOddFibonacci(n)); } //This Code is Contributed by Sachin } |
PHP
<?php// PHP program to Find the sum of // first N odd Fibonacci numbers $mod = 1000000007 ;// Function to calculate sum of // first N odd Fibonacci numbers function sumOddFibonacci($n) { global $mod; $Sum[$n + 1] = array(); // base values $Sum[0] = 0; $Sum[1] = 1; $Sum[2] = 2; $Sum[3] = 5; $Sum[4] = 10; $Sum[5] = 23; for ($i = 6; $i <= $n; $i++) { $Sum[$i] = (($Sum[$i - 1] + (4 * $Sum[$i - 2]) % $mod - (4 * $Sum[$i - 3]) % $mod + $mod) % $mod + ($Sum[$i - 4] - $Sum[$i - 5] + $mod) % $mod) % $mod; } return $Sum[$n]; } // Driver code $n = 6; echo sumOddFibonacci($n); // This code is contributed by jit_t?> |
Javascript
<script>// javascript program to Find the sum of // first N odd Fibonacci numbers var mod = 1000000007; // Function to calculate sum of first // N odd Fibonacci numbers function sumOddFibonacci(n) { var Sum = Array(n + 1).fill(0); // base values Sum[0] = 0; Sum[1] = 1; Sum[2] = 2; Sum[3] = 5; Sum[4] = 10; Sum[5] = 23; for (i = 6; i <= n; i++) { Sum[i] = ((Sum[i - 1] + (4 * Sum[i - 2]) % mod - (4 * Sum[i - 3]) % mod + mod) % mod + (Sum[i - 4] - Sum[i - 5] + mod) % mod) % mod; } return Sum[n]; } // Driver code var n = 6; document.write(sumOddFibonacci(n));// This code contributed by umadevi9616</script> |
44
Time Complexity: O(n), Auxiliary Space: O(n)
Efficient approach : Space optimization O(1)
In previous approach we the current value Sum[i] is only depend upon the previous 6 values i.e. Sum[i-1], Sum[i-2], …. Sum[i-5] So to optimize the space we can keep track of previous and current values by the help of three variables Sum0, Sum1 , …. , Sum5 which will reduce the space complexity from O(N) to O(1).
Implementation Steps:
- Create variables Sum0, Sum1 , …. , Sum5 to keep track of previous values of Sum[].
- Initialize base case.
- Create a variable Sum to store current value.
- Iterate over subproblem using loop and update Sum.
- After every iteration update Sum0, Sum1 , …. , Sum5 for further iterations.
- At last return Sum.
Implementation:
C++
// CPP program to Find the sum of// first N odd Fibonacci numbers#include <bits/stdc++.h>using namespace std;#define mod 1000000007// Function to calculate sum of first// N odd Fibonacci numberslong long sumOddFibonacci(int n){// long long Sum[n + 1]; // base values int Sum0 = 0; int Sum1 = 1; int Sum2 = 2; int Sum3 = 5; int Sum4 = 10; int Sum5 = 23; int Sum; for (int i = 6; i <= n; i++) { Sum = ((Sum5 + (4 * Sum4) % mod - (4 * Sum3) % mod + mod) % mod + (Sum2 - Sum1 + mod) % mod) % mod; //assigning values for further iteration Sum0 = Sum1; Sum1 = Sum2; Sum2 = Sum3; Sum3 = Sum4; Sum4 = Sum5; Sum5 = Sum; } // return final answer return Sum;}// Driver codeint main(){ long long n = 6; // function call cout << sumOddFibonacci(n); return 0;} |
Python
MOD = 1000000007# Function to calculate sum of first# N odd Fibonacci numbersdef sumOddFibonacci(n): # base values Sum0 = 0 Sum1 = 1 Sum2 = 2 Sum3 = 5 Sum4 = 10 Sum5 = 23 for i in range(6, n+1): Sum = ((Sum5 + (4 * Sum4) % MOD - (4 * Sum3) % MOD + MOD) % MOD + (Sum2 - Sum1 + MOD) % MOD) % MOD # assigning values for further iteration Sum0 = Sum1 Sum1 = Sum2 Sum2 = Sum3 Sum3 = Sum4 Sum4 = Sum5 Sum5 = Sum # return final answer return Sum# Driver coden = 6# function callprint(sumOddFibonacci(n)) |
Java
import java.util.*;public class Main { // Function to calculate sum of first // N odd Fibonacci numbers static long sumOddFibonacci(int n) { int mod = 1000000007; // base values int Sum0 = 0; int Sum1 = 1; int Sum2 = 2; int Sum3 = 5; int Sum4 = 10; int Sum5 = 23; int Sum; for (int i = 6; i <= n; i++) { Sum = ((Sum5 + (4 * Sum4) % mod - (4 * Sum3) % mod + mod) % mod + (Sum2 - Sum1 + mod) % mod) % mod; // assigning values for further iteration Sum0 = Sum1; Sum1 = Sum2; Sum2 = Sum3; Sum3 = Sum4; Sum4 = Sum5; Sum5 = Sum; } // return final answer return Sum5; } // Driver Code public static void main(String[] args) { int N = 6; System.out.println(sumOddFibonacci(N)); }} |
Output:
44
Time Complexity: O(n)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



