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

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

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