As you probably know, Fibonacci sequence are the numbers in the following integer sequence:
1, 1, 2, 3, 5, 8, 13...
Write a method that takes the index as an argument and returns last digit from fibonacci number. Example:
  getLastDigit(15) - 610. Your method must return 0 because the last digit of 610 is 0.
Fibonacci sequence grows very fast and value can take very big numbers (bigger than integer type can contain), so, please, be careful with overflow.

[Hardcore version of this kata](http://www.codewars.com/kata/find-last-fibonacci-digit-hardcore-version), no bruteforce will work here ;)

Difficulty: EASY
Starter code: def get_last_digit(index):
	

Solutions:
def get_last_digit(index):
	(a, b) = (0, 1)
	for _ in range(index):
		(a, b) = (b, (a + b) % 10)
	return a


def get_last_digit(index):
	(last, tmp, index) = (0, 1, index % 60)
	for i in range(index):
		(last, tmp) = (tmp, (last + tmp) % 10)
	return last


def get_last_digit(index):
	return [0, 1, 1, 2, 3, 5, 8, 3, 1, 4, 5, 9, 4, 3, 7, 0, 7, 7, 4, 1, 5, 6, 1, 7, 8, 5, 3, 8, 1, 9, 0, 9, 9, 8, 7, 5, 2, 7, 9, 6, 5, 1, 6, 7, 3, 0, 3, 3, 6, 9, 5, 4, 9, 3, 2, 5, 7, 2, 9, 1][index % 60]


def get_last_digit(n):
	f = [0, 1] + [0] * (n - 1)
	for i in range(2, n + 1):
		f[i] = f[i - 1] + f[i - 2] % 10
	return f[n] % 10


(S, L, x, y) = (set(), [], 0, 1)
while not (x, y) in S:
	S.add((x, y))
	z = (x + y) % 10
	L.append(z)
	(x, y) = (y, z)
memo = L[-2:] + L[:-2]

def get_last_digit(index):
	return memo[index % len(memo)]


def get_last_digit(index):
	if index <= 2:
		return 1
	(x, y) = (1, 1)
	for i in range(index - 2):
		res = x + y
		(x, y) = (y, res)
	return res % 10


def get_last_digit(index):
	return int('011235831459437077415617853819099875279651673033695493257291'[index % 60])


def get_last_digit(index):
	ds = '011235831459437077415617853819099875279651673033695493257291'
	return int(ds[index % len(ds)])