0256 - Verificare termen sir Fibonacci

From Bitnami MediaWiki

Cerință[edit | edit source]

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

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

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele pe care dorim sa le verificam daca apartin sirului Fibonacci.

Date de ieșire[edit | edit source]

Programul afișează pe ecran DA / NU in functie de apartenenta numarului in sirul Fibonacci.

Restricții și precizări[edit | edit source]

1 ≤ n ≤ 10 numerele care se verifică au cel mult 9 cifre

Exemplu[edit | edit source]

Date de intrare: 8 13 1 8 24 21 55 47 8
Date de ieșire: DA DA DA NU DA DA NU DA

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def apartine_sir_fibo(numar):

   if numar == 1:
       return 1
   f1 = 0
   f2 = 1
   f3 = f1 + f2
   while numar > f3:
       f3 = f1 + f2
       f1 = f2
       f2 = f3
   return numar == f3

def numere(array):

   for elements in array:
       if apartine_sir_fibo(elements):
           print("DA")
       else:
           print("NU")


if __name__ == "__main__":

   numar = int(input())
   array = [int(input()) for i in range(numar)]
   numere(array)

</syntaxhighlight>