Nth Element Of Modified Fibonacci Series

Posted: 23 Oct, 2020
Difficulty: Easy


Try Problem

You have been given two integers ‘X’ and ‘Y’ which are the first two integers of a series and an integer ‘N’. You have to find the Nth number of the series using the Fibonacci rule given by f(x) = f(x - 1) + f(x - 2).

The answer may be very large, return it after modulus 10 ^ 9 + 7.


The series is 1-based indexed.
Input Format:
The first line contains an integer T denoting the number of test cases. Then each test case follows.

The first line of each test case contains three space-separated integers ‘X’, 'Y', and ‘N’, respectively where ‘X’ and ‘Y’ represent the first and second element of the series while N represents which number of the sequence we have to find out.
Output Format:
For each test case, print a single line containing a single integer denoting the Nth number of the series.

The output of each test case will be printed in separate lines.
You are not required to print the expected output; it has already been taken care of. Just implement the given function.
1 <= T <= 100
1 <= N <= 10 ^ 18
-10 ^ 6 <= X, Y <= 10 ^ 6

Time limit: 1 sec.
Approach 1

Let’s define a dp array of size N, where dp[i] represents the i-th Fibonacci number. For each block, let’s compute the answer in a top-down fashion, starting with the leftmost blocks (dp[0] and dp[1]). We will iterate through the array for i = 2 to N and then we can fill the array in a top-down manner like:


                                  dp[i] = dp[i-1] + dp[i-2].


Since, during this method, we only need the previous two states, we can store the last two states in two variables instead of using a whole array.


Here is the algorithm:

  1. Initialise variable sum = 0 that stores the sum of the previous two values.
  2. Now, run a loop from i = 2 to N-1 and for each index update value of sum = X + Y  and X = Y, Y = sum.
  3. Finally, return the sum, which is the required Nth element.
Try Problem