This program computes the N^th Fibonacci number in modulo mod input argument .
More...
#include <iostream>
#include <vector>
#include <cassert>
|
| uint64_t | fibo (uint64_t n, uint64_t mod) |
| |
| void | test () |
| |
| int | main () |
| |
This program computes the N^th Fibonacci number in modulo mod input argument .
Takes O(logn) time to compute nth Fibonacci number
- Author
- villayatali123
-
[unknown author]()
- See also
- fibonacci.cpp, fibonacci_fast.cpp, string_fibonacci.cpp, fibonacci_large.cpp
◆ fibo()
| uint64_t fibo |
( |
uint64_t |
n, |
|
|
uint64_t |
mod |
|
) |
| |
This function finds nth fibonacci number in a given modulus
- Parameters
-
| n | nth fibonacci number |
| mod | modulo number |
30 Identity[0][0]=1; Identity[0][1]=0;
31 Identity[1][0]=0; Identity[1][1]=1;
34 transition[1][0]=transition[1][1]=transition[0][1]=1;
47 res[i][j]=(res[i][j]%mod+((Identity[i][k]%mod*transition[k][j]%mod))%mod)%mod;
55 Identity[i][j]=res[i][j];
68 res1[i][j]=(res1[i][j]%mod+((transition[i][k]%mod*transition[k][j]%mod))%mod)%mod;
76 transition[i][j]=res1[i][j];
82 return ((result[0]%mod*Identity[0][0]%mod)%mod+(
result[1]%mod*Identity[1][0]%mod)%mod)%mod;
uint64_t result(uint64_t n)
Definition: fibonacci_sum.cpp:76
◆ main()
Main function
109 uint64_t mod=1000000007;
uint64_t fibo(uint64_t n, uint64_t mod)
Definition: fibonacci_matrix_exponentiation.cpp:23
void test()
Definition: fibonacci_matrix_exponentiation.cpp:88
◆ test()
Function to test above algorithm
90 assert(
fibo(6, 1000000007 ) == 8);
92 assert(
fibo(5, 1000000007 ) == 5);
94 assert(
fibo(10 , 1000000007) == 55);
96 assert(
fibo(500 , 100) == 25);
98 assert(
fibo(500 , 10000) == 4125);