• Как оптимизировать алгоритм подсчёта суммы чётных чисел Фибоначчи?

    @alaz1987
    Еще одно решение, помедленнее, чем у 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
    Ответ написан
    Комментировать