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

Verifică dacă un număr aparține șirului Fibonacci în C++

Dându-se un număr natural n, să se verifice dacă este sau nu un termen al șirului Fibonacci.

Exemplu. Pentru n = 13, răspunsul este DA, pe când, pentru n = 14, răspunsul este NU.

Ce este șirul Fibonacci

Șirul Fibonacci este un faimos șir, care se generează pe baza următoarei reguli:

https://i.ibb.co/jRfkKfX/image.png

Astfel, primele elemente ale șirului sunt: 1, 1, 2, 3, 5, 8, 13, 21, ….

Explicarea algoritmului

Vom genera elementele șirului Fibonacci până când elementul curent este egal sau mai mare decât n (numărul pe care îl verificăm). Astfel, dacă atingem valoarea n, înseamnă că n este un termen Fibonacci. Dacă, în schimb, trecem peste valoarea n, înseamnă că n nu face parte din șirul Fibonacci.

Implementare C++

Iată secvența de cod care verifică dacă un număr n este sau nu număr Fibonacci.

#include <iostream>

using namespace std;

int main()
{
    //Declarăm și citim numărul pe care îl verificăm, n
    int n;
    cin >> n;

    if(n == 1) { //Caz particular
        cout << "DA";
    } else {
        //Generăm șirul Fibonacci pentru a verifica dacă n face parte din șir
        //Îl vom genera cu trei variabile: c = fn, b = fn-1, a = fn-2
        int a = 1, b = 1, c;
        int esteTermenFib = 0; //În caz că nu este termen Fibonacci, să afișăm NU la final
        do {
            c = a + b;
            a = b;
            b = c;
            if(n == c) { //Este termen Fibonacci
                esteTermenFib = 1;
                cout << "DA";
                break;
            }
        } while(c <= n);
        if(esteTermenFib == 0) { //Nu este termen Fibonacci
            cout << "NU";
        }
    }
    return 0;
}

Bibliografie sau alte resurse

Cuprinsul lecției

Se încarcă…

Citește și

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

© 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