Contact și feedback

Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.


Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.


Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

Generarea șirului Fibonacci generalizat în C++

Dându-se două numere naturale, f1 și f2, să se genereze șirul Fibonacci generalizat, cu primii doi termeni f1 și f2 și termenul general f(n) = f(n - 1) + f(n - 2).

Exemplu. Pentru f1 = 3 și f2 = 1, primele elemente ale șirului sunt 3 1 4 5 9 14 23… (4 = 3 + 1, 5 = 1 + 4, 9 = 4 + 5, …).

Vom genera doar primele 10 elemente pentru a exemplifica algoritmul.

Vom prezenta două metode — una cu vectori și una folosind doar trei variabile.

Metoda 1 (vectori)

Vom crea un șir care să conțină șirul Fibonacci generalizat, în care primii doi termeni sunt f1 și f2. Vom aplica formula termenului general f[n] = f[n - 1] + f[n - 2] pentru a genera următorii termeni. La final, vom afișa vectorul generat.

Implementare C++

#include <iostream>

using namespace std;

int main()
{
    //Declarăm și citim primii doi termeni
    int f1, f2;
    cin >> f1 >> f2;

    //Formăm șirul Fibonacci generalizat
    int f[11];
    f[1] = f1; //Atribuim primele două valori în șir
    f[2] = f2;
    for(int i = 3; i <= 10; i++) { //Folosind termenul general al șirului, generăm restul elementelor
        f[i] = f[i - 1] + f[i - 2];
    }

    //Afișăm șirul f la final
    for(int i = 1; i <= 10; i++) {
        cout << f[i] << " ";
    }
    return 0;
}

Metoda 2 (trei variabile)

Observăm că dacă avem doi termeni în două variabile, după ce generăm noul termen, nu mai avem nevoie de termenul mai vechi. Astfel, putem să procedăm astfel:

  • Creăm o variabilă auxiliară aux, care ia valoarea termenului curent (f1 + f2);
  • Variabila f1 preia valoarea lui f2 (f2 devine noul f1);
  • Variabila f2 preia valoarea lui aux (aux este acum f1);
  • Afișăm f2 (elementul curent);
  • Repetăm pașii până când generăm primii n termeni.

Vom afișa înainte primii doi termeni.

Implementare C++

#include <iostream>

using namespace std;

int main()
{
    //Declarăm și citim primii doi termeni
    int f1, f2;
    cin >> f1 >> f2;

    //Formăm și afișăm șirul Fibonacci generalizat
    cout << f1 << " " << f2 << " "; //Afișăm primii doi termeni
    for(int i = 3; i <= 10; i++) { //Generăm restul termenilor
        int aux = f1 + f2;
        f1 = f2;
        f2 = aux;
        cout << aux << " "; //Afișăm noul element generat
    }
    return 0;
}

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

Cuprinsul lecției

Se încarcă…

Citește și

Inversarea unui șir de caractere în C++Radicalul unui număr în C++ (rădăcina pătrată)Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++CMMDC recursiv a două numere naturale în C++Transformarea unui număr din baza 2 în baza 10 în C++Recursivitate în C++Căutare binară în C++Cifra maximă a unui număr recursiv în C++Șirul lui Fibonacci în C++Află secolul unui an citit de la tastatură în C++Ciurul lui Eratostene în C++Suma divizorilor unui număr în C++Suma numerelor naturale dintr-un interval dat în C++Cel mai mic număr cu suma cifrelor N în C++Aria unui triunghi folosind coordonatele acestora în C++Transformarea unui număr din baza 10 în baza 2 în C++Suma 1 + 2 + 3 + ... + N în C++Algoritm recursiv pentru căutare binară (clasa a X-a)Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicAplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorOperații cu numere mari în C++ - Toate funcțiile explicateVerifică dacă un număr este par sau impar fără modulo în C++De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Verifică dacă o literă este mică sau mare în C++Pointer în C++. Variabile de tipul char * (char steluță)Suma elementelor unui vector recursiv în C++Complexitatea unui algoritm (timp și spațiu) în C++Citește un șir de caractere cu spații în C++Ce este o variabilă unsigned în C++?Transformarea unei litere mari în literă mică în C++Calculul combinărilor de n luate câte k (nCk) în C++Interclasarea a doi vectori în C++Valoarea absolută (modulul) unui număr în C++Cel mai puțin semnificativ bit în C++Aria și circumferința unui cerc în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortPrima cifră a unui număr în C++Al N-lea termen dintr-o progresie geometricăMaximul și minimul a două valori în C++Generarea șirului Fibonacci generalizat în C++Cifra maximă și minimă a unui număr în C++Instrucțiunea de decizie în C++: if, else, switch, caseCombinatorică în C++: permutări, aranjamente, combinări și alteleCum să calculezi instant 2 la puterea N în C++Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăCe este o funcție void în C++?Verifică dacă un caracter este cifră în C++Numărul de divizori al unui număr în C++Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Mediana unui șir de valori în C++Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Cifrele unui număr. Prelucrarea cifrelor unui număr în C++Cel mai mare divizor comun (CMMDC) a două numere în C++Vectori de frecvență (de apariții) în C++Afișarea elementelor unui vector recursiv în C++Verificarea unui an bisect în C++Instrucțiunea do while (structuri repetitive)Ce înseamnă endl în C++?Funcții în C++. Ce sunt subprogrameleCodul ASCII (tabel complet)Rădăcina cubică a unui număr în C++ (cube root)Structuri repetitive (while, do while, for, etc)Verificare număr prim în C++ (Clasa a IX-a)Cea mai lungă secvență de elemente crescătoare în C++Materia pentru olimpiada de informatică - tot ce trebuie să știiCel mai frecvent element dintr-un șir în C++Tipuri de date în C++: numere întregi, reale, caractere și alteleNumărul permutărilor în C++ (formula permutărilor)Verifică dacă un număr aparține șirului Fibonacci în C++Verifică dacă un număr dat este o putere de 2 în C++Instrucțiunea break (structuri repetitive)Comentarii în C++Distanța dintre două puncte în C++Ce înseamnă variabilă globală și locală în C++?Vectorii în C++: citire și afișareCum să afișezi partea întreagă a unui număr real în C++Citirea și afișarea matricelor în C++Divide et Impera (metodă de programare C++)Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Oglinditul unui număr în C++Afișarea divizorilor primi ai unui număr în C++Factorialul unui număr în C++Verifică dacă un caracter este literă în C++Maximul și minimul a trei valori în C++Matrice pătratice în C++. Diagonala principală și secundarăCum să citești și să afișezi în fișiere în C++Tipul struct în C++. Ce sunt structurile de date neomogeneIndicatorul lui Euler în C++Numărul aranjamentelor în C++ (formula aranjamentelor)Do while vs while în C++ - Care e diferența?Câte numere naturale sunt într-un interval dat? (C++)Interschimbarea a două variabile în C++ (3 metode)Transformarea unei litere mici în literă mare în C++Instrucțiunea while (structuri repetitive)Oglinditul recursiv al unui număr în C++Numărul de apariții al unui număr într-un vector în C++Funcții predefinite în C++ (matematice, șiruri de caractere)Cel mai semnificativ bit în C++Numărul combinărilor în C++ (formula combinărilor)Numărul de cifre ale factorialului unui numărMaximul și minimul a n valori în C++Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Numărul de divizori primi ai unui număr în C++Vectorii în C++: declarare și parcurgereInstrucțiunea continue (structuri repetitive)Numărul minim de peroane pentru o gară în C++Aflarea sumei primelor N sume GaussBordarea unei matrice în C++Verifică dacă o literă este vocală în C++Copiuțe: Cifrele unui numărMatrice în C++. Declararea și parcurgerea tablourilor bidimensionaleCifra de control a unui numărInversarea unui vector în C++Al N-lea termen Fibonacci în C++Șiruri de caractere în C++. Tot ce trebuie să știiVerificare dacă un număr este palindrom în C++Verifică dacă trei puncte sunt coliniare C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Numere triunghiulare. Verificarea unui număr triunghiularAl N-lea termen dintr-o progresie aritmeticăMaximul și minimul unui vector în C++Verificare dacă șir de caractere este palindrom în C++Instrucțiunea for (structuri repetitive)

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont