Torna alle sfide
Facile 0 risolte 0% di accettazione

Somma dei termini pari di Fibonacci

Somma i termini pari della successione di Fibonacci che non superano un limite.

Cosa imparerai

  • Generare i termini di Fibonacci fino a un limite
  • Tenere solo i termini pari
  • Fermare il ciclo al momento giusto

Problema

Inizia la sequenza con 1 e 2. Ogni termine successivo è la somma dei due precedenti. Considera solo i termini di valore pari che non superano il limite, poi somma questi valori.

Implementa even_fibonacci_sum(limit).

Input

limit: Il valore massimo che un termine può avere per essere incluso.

Output

Restituisci la somma, oppure 0 se non ci sono termini idonei.

Vincoli

0 ≤ limit ≤ 10¹⁵. Il risultato rientra in un intero con segno a 64 bit.

Esempi

Esempio 1
Input:
limit = 50

Output atteso:
expected = 44
Input:
long long limit = 50;

Output atteso:
long long expected = 44;
Input:
long limit = 50;

Output atteso:
long expected = 44;

Spiegazione

I termini pari sono 2, 8 e 34. La loro somma è 44.

Esempio 2
Input:
limit = 1

Output atteso:
expected = 0
Input:
long long limit = 1;

Output atteso:
long long expected = 0;
Input:
long limit = 1;

Output atteso:
long expected = 0;

Spiegazione

Il primo termine pari è 2, che supera il limite.

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

Ti servono solo i termini pari di Fibonacci, non tutta la sequenza.

Suggerimento 2

Genera la sequenza finché il termine successivo supera il limite e somma i termini validi.

Suggerimento 3

Fai attenzione al caso in cui il limite stesso sia un termine di Fibonacci.

Complessità attesa

tempo O(log limit), spazio aggiuntivo O(1)

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.