Как оптимизировать алгоритм подсчёта суммы чётных чисел Фибоначчи?
Навскидку, числа Фибоначчи идут в периоде (нечет-нечет-чет). 
При этом четный член равен сумме предыдущих нечетных.
3+5 = 8
13 + 21 = 34
55 + 89 = 144
То есть, четное число - это полусумма своей тройки.
Так что берем искомую последовательность, добавляем при необходимости один-два члена (чтоб получить полную тройку). Сумма первых 2k+1 чисел равна 2*F_{2k+1}. Сумма первых 2k чисел равна F_{2k+2}.
Так что ищем сумму, отнимаем 1 и 2, отнимаем добавленные слагаемые, делим на два, получаем ответ.
Формулу быстрого поиска энного числа Фибоначчи ищем на википедии. 
В результате при любых больших n поиск будет занимать почти одинаковое время.
Еще одно решение, помедленнее, чем у uvelichitel, но рабочее и в лимит 4 сек. укладывается. Как показала практика, самая медленная операция в этом алгоритме - это остаток от деления на больших числах. Побитовые сдвиги помогли ускорить алгоритм в 2 раза.def solution(A):
	r = s = 0
	x = y = 1
	i = 2

	while i < A:
		y = x + y
		x = y - x

		n = y >> 1
		n = n << 1

		if n == y: # is even?
			s += y

		i += 1

	r = sum(map(int, str(s)))
	return r