Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "bits/stdc++.h"
- using namespace std;
- typedef long long int ll;
- unordered_map < ll, ll > f;
- const ll mod = 1e9 + 7;
- unordered_map < ll, ll > :: iterator it;
- ll fib(ll n){
- if(n == 0)return 0;
- if(f[n])return f[n];
- ll k = (n+1)/2;
- if(n%2 == 0){
- return f[n] = ((2 * fib(k-1) % mod + fib(k) % mod) % mod * fib(k) % mod) % mod;
- }
- else{
- return f[n] = (fib(k) * fib(k) % mod + fib(k-1) * fib(k-1) % mod) % mod;
- }
- }
- int main(){
- ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
- ll n, gcd, num, i;
- f[0] = 0;
- f[1] = 1;
- f[2] = 1;
- cin >> n;
- cout << fib(n);
- return 0;
- }
Add Comment
Please, Sign In to add comment