Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.72 KB | None | 0 0
  1. /// matrix for O(lgN)
  2. void multiply(int F[2][2], int M[2][2])
  3. {
  4.   int x =  F[0][0]*M[0][0] + F[0][1]*M[1][0];
  5.   int y =  F[0][0]*M[0][1] + F[0][1]*M[1][1];
  6.   int z =  F[1][0]*M[0][0] + F[1][1]*M[1][0];
  7.   int w =  F[1][0]*M[0][1] + F[1][1]*M[1][1];
  8.  
  9.   F[0][0] = x;
  10.   F[0][1] = y;
  11.   F[1][0] = z;
  12.   F[1][1] = w;
  13. }
  14.  
  15. /* Optimized version of power()*/
  16. void power(int F[2][2], int n)
  17. {
  18.   if( n == 0 || n == 1)
  19.       return;
  20.   int M[2][2] = {{1,1},{1,0}};
  21.  
  22.   power(F, n/2);
  23.   multiply(F, F);
  24.  
  25.   if (n%2 != 0)
  26.      multiply(F, M);
  27. }
  28.  
  29. /* function that returns nth Fibonacci number */
  30. int fibonacci_4(int n)
  31. {
  32.   if (n == 0)
  33.     return 0;
  34.  
  35.   int F[2][2] = {{1,1},{1,0}};
  36.  
  37.   power(F, n-1);
  38.   return F[0][0];
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement