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.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
Șirul Fibonacci este un șir de numere descoperit de matematicianul Leonardo Pisano, unde fiecare element se generează pe baza ultimelor două numere. Astfel:
1
: f1 = 1
, f2 = 1
;fn = fn - 1 + fn - 2
(n ≥ 3
).Unele persoane consideră și elementul 0
ca fiind elementul f0
al șirului.
Astfel, primele 20
de numere ale șirului sunt 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, …
, care verifică condiția fn = fn-1 + fn-2
:
Pentru a implementa șirul Fibonacci în C++, ne vom folosi de trei variabile, a
, b
și c
, cu următorul algoritm:
a
și b
sunt egale cu 1
(primele două elemente Fibonacci);c
primește a + b
(devenind astfel noul termen Fibonacci generat), iar a
devine b
și b
devine c
(ca să generăm următorul element, care ar fi fost egal cu b + c
)Atenție: doar primii 45
de termeni ai șirului încap în tipul de date int
!
Următorul cod C++ afișează pe ecran primele n
elemente ale șirului lui Fibonacci (n ≥ 2
):
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n; //Numărul de elemente de afișat
int a = 1, b = 1, c;
cout << a << " " << b << " "; //Afișăm primii 2 termeni
for(int i = 3; i <= n; i++) { //Afișăm restul de termeni, de la 3 la n
c = a + b; //Conform algoritmului descris mai sus
a = b;
b = c;
cout << c << " "; //Afișăm noul element generat
}
return 0;
}
Să se completeze următoarele secvențe de cod:
Să se afișeze termenii Fibonacci mai mici sau egali cu un număr x
:
int a = 1, b = 1, c, x;
cin >> x;
cout << a << " " << ??? << " ";
while(a + b <= ???) {
c = a + b;
a = b;
b = c;
cout << c << " ";
}
Să se inițializeze variabilele a, b, c
pentru a afișa primii 60
de termeni Fibonacci:
??? a = 1, b = 1, c;
cout << a << " " << b << " ";
for(int i = 3; i <= 60; i++) {
c = a + b;
a = b;
b = c;
cout << c << " ";
}
# | Problemă | Dificultate |
---|---|---|
28. | Fibonacci | Ușoară (2 |
207. | Toti sunt termeni Fibonacci | Medie (4 |
31. | Verificare Fibonacci | Medie (4 |
29. | Fibonacci 2 | Ușoară (2 |
30. | Fibonacci generalizat | Ușoară (2 |