Problema
Comece a sequência com 1 e 2. Cada termo seguinte é a soma dos dois anteriores. Considere apenas os termos de valor par que não sejam maiores que o limite, e então some-os.
Implemente even_fibonacci_sum(limit).
Entrada
limit: O maior valor de termo que pode ser incluído.
Saída
Retorne a soma, ou 0 se não houver termos elegíveis.
Restrições
0 ≤ limit ≤ 10¹⁵. O resultado cabe em um inteiro assinado de 64 bits.
Exemplos
Entrada:
limit = 50
Saída esperada:
expected = 44
Entrada:
long long limit = 50;
Saída esperada:
long long expected = 44;
Entrada:
long limit = 50;
Saída esperada:
long expected = 44;
Explicação
Os termos pares são 2, 8 e 34. A soma deles é 44.
Entrada:
limit = 1
Saída esperada:
expected = 0
Entrada:
long long limit = 1;
Saída esperada:
long long expected = 0;
Entrada:
long limit = 1;
Saída esperada:
long expected = 0;
Explicação
O primeiro termo par é 2, que excede o limite.
Como abordar
Tente sozinho primeiro e depois abra uma dica de cada vez.
Dica 1
Você só precisa dos termos pares de Fibonacci, não da sequência inteira.
Dica 2
Gere a sequência até o próximo termo ultrapassar o limite e some os termos válidos.
Dica 3
Cuidado com o caso em que o próprio limite é um termo de Fibonacci.
Complexidade esperada
tempo O(log limit), espaço extra O(1)
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.