


The series is 1-based indexed.
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.
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.
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:
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:
The N’th term of a Fibonacci series can be computed using matrix multiplication as terms of the Fibonacci series follows the following relation.
(Fn-1 Fn) = ( Fn−2 Fn−1 ) ⋅ ( 0 1 )
1 1
If we extend this further, we have:
(Fn Fn+1) = ( F0 F1 ) ⋅ (P)N
Where P is ( 0 1 )
1 1 .
As in the relation, rank is zero-based, so we will compute the answer for n = n-1.
We will find Fn corresponding to the n’th element of the Fibonacci Series and X will be F0 and Y will be F1.
We will find the PN using Binary exponentiation using takes O(logN) time.