Problema
Comienza la secuencia con 1 y 2. Cada término siguiente es la suma de los dos anteriores. Incluye solo los términos de valor par que no sean mayores que limit, y luego súmalos.
Implementa even_fibonacci_sum(limit).
Entrada
limit: El mayor valor de término que puede incluirse.
Salida
Devuelve la suma, o 0 si no hay términos elegibles.
Restricciones
0 ≤ limit ≤ 10¹⁵. El resultado cabe en un entero con signo de 64 bits.
Ejemplos
Entrada:
limit = 50
Salida esperada:
expected = 44
Entrada:
long long limit = 50;
Salida esperada:
long long expected = 44;
Entrada:
long limit = 50;
Salida esperada:
long expected = 44;
Explicación
Los términos pares son 2, 8 y 34. Su suma es 44.
Entrada:
limit = 1
Salida esperada:
expected = 0
Entrada:
long long limit = 1;
Salida esperada:
long long expected = 0;
Entrada:
long limit = 1;
Salida esperada:
long expected = 0;
Explicación
El primer término par es 2, que supera el límite.
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Solo necesitas los términos pares de Fibonacci, no toda la secuencia.
Pista 2
Genera la secuencia hasta que el siguiente término supere el límite y suma los términos válidos.
Pista 3
Ojo con el borde cuando el límite en sí es un término de Fibonacci.
Complejidad esperada
tiempo O(log limit), espacio extra O(1)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.