Problème
Commencez la suite avec 1 et 2. Chaque terme suivant est la somme des deux précédents. Incluez uniquement les termes de valeur paire qui ne dépassent pas la limite, puis additionnez-les.
Implémentez even_fibonacci_sum(limit).
Entrée
limit : La plus grande valeur de terme pouvant être incluse.
Sortie
Retournez la somme, ou 0 s'il n'y a aucun terme admissible.
Contraintes
0 ≤ limit ≤ 10¹⁵. Le résultat tient dans un entier signé 64 bits.
Exemples
Entrée :
limit = 50
Sortie attendue :
expected = 44
Entrée :
long long limit = 50;
Sortie attendue :
long long expected = 44;
Entrée :
long limit = 50;
Sortie attendue :
long expected = 44;
Explication
Les termes pairs sont 2, 8 et 34. Leur somme est 44.
Entrée :
limit = 1
Sortie attendue :
expected = 0
Entrée :
long long limit = 1;
Sortie attendue :
long long expected = 0;
Entrée :
long limit = 1;
Sortie attendue :
long expected = 0;
Explication
Le premier terme pair est 2, qui dépasse la limite.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Tu n’as besoin que des termes pairs de Fibonacci, pas de toute la suite.
Indice 2
Génère la suite jusqu’à ce que le terme suivant dépasse la limite et additionne les termes valides.
Indice 3
Fais attention à la borne quand la limite elle-même est un terme de Fibonacci.
Complexité attendue
temps O(log limit), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.