Berzerk
By: a guest | Mar 20th, 2010 | Syntax:
None | Size: 0.64 KB | Hits: 66 | Expires: Never
def matrixsquare(matrix):
return [[matrix[0][0]**2+matrix[0][1]*matrix[1][0],matrix[0][1]*(matrix[0][0]+matrix[1][1])],[matrix[1][0]*(matrix[0][0]+matrix[1][1]),matrix[1][1]**2+matrix[1][0]*matrix[0][1]]]
def matrixmult(a,b):
return [[a[0][0]*b[0][0]+a[0][1]*b[1][0],a[0][0]*b[0][1]+a[0][1]*b[1][1]],[a[1][0]*b[0][0]+a[1][1]*b[1][0],a[1][0]*b[0][1]+a[1][1]*b[1][1]]]
def fibo(b):
b=bin(b)[3:]
x=[[1,1],[1,0]]
y=[[2,1],[1,1]]
for i in b:
if i=='0':
y=matrixmult(x,y)
x=matrixsquare(x)
else:
x=matrixmult(y,x)
y=matrixsquare(y)
return x[0][1]