Informatică, întrebare adresată de Elena1elle, 9 ani în urmă

Se consideră şirul Fibonacci, definit astfel: f1=1 , f2=1 , fn=fn-1+fn-2 , dacă n>2.

Cerinţa
Se dau n numere naturale. Să se verifice despre fiecare dacă este termen al şirului lui Fibonacci.

Date de intrare
Programul citește de la tastatură numărul n şi apoi n numere naturale.

Date de ieşire
Programul afișează pe câte o linie a ecranului, pentru fiecare număr, mesajul DA, dacă acel număr este termen al şirului lui Fibonacci, respectiv NU în caz contrar.

Restricţii şi precizări
1 ≤ n ≤ 10
numerele care se verifică au cel mult 9 cifre

Exemplu
Date de intrare

8
13 1 8 24 21 55 47 8
Date de ieșire

DA
DA
DA
NU
DA
DA
NU
DA

si am facut ceva, dar la afisare nu stiu ce conditie trebuie pusa
#include
using namespace std;
short n,i;
int f1,f2,x;
int main()
{
cin>>n;f1=1;f2=1;
for(i=1;i<=n;i++)
{cin>>x;
while(x {f1=f2;
f2=x;
x=f1+f2;}
if(x==n)
cout<<"DA"< else if(x>n)
cout<<"NU"< return 0;
}

Răspunsuri la întrebare

Răspuns de ionutg38
12
#include <iostream> #include <cassert> using namespace std; int main(){ int n, x, a=1, b=1, c; cin >> n; for( ; n ; --n){ cin >> x; if(x==1) cout << "DA\n"; else{ a=1, b=1; do { c = a+b; a = b; b = c; } while(c<x); if(c==x) cout << "DA\n"; else cout << "NU\n"; } } return 0; }

Elena1elle: fara biblioteca cassert nu se poate?
ionutg38: ba da, se poate, poti s-o elimini
Elena1elle: multumesc ! :)
Alte întrebări interesante