0994 - Fibo Verif 1: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: = Cerinţa = Se consideră şirul Fibonacci, definit astfel: <code>f1=1</code>, <code>f2=1</code>, respectiv <code>fn=fn-1+fn-2</code>, dacă <code>n>2</code>. Se dă un şir cu <code>n</code> elemente, numere naturale. Să se afişeze elementele şirului care sunt termeni ai şirului lui Fibonacci. Se va defini şi apela o funcţie <code>fibo</code> care verifică dacă un număr natural, transmis ca parametru, face parte din şirul lui Fibonacci. = Date de intrare = Pe p...
 
mNo edit summary
 
Line 7: Line 7:


= Date de intrare =
= Date de intrare =
Pe prima linie a fişierului <code>fiboverif1.in</code> se află numărul <code>n</code>, iar pe a doua linie <code>n</code> numere naturale.
Pe prima linie a fişierului <code>fiboverif1.txt</code> se află numărul <code>n</code>, iar pe a doua linie <code>n</code> numere naturale.


= Date de ieşire =
= Date de ieşire =
Pe prima linie a fişierului <code>fiboverif1.out</code> se vor afla elementele şirului dat care sunt termeni ai şirului lui Fibonacci, separaţi prin exact un spaţiu.
Pe prima linie a fişierului <code>fiboverif2.txt</code> se vor afla elementele şirului dat care sunt termeni ai şirului lui Fibonacci, separaţi prin exact un spaţiu.


= Restricţii şi precizări =
= Restricţii şi precizări =

Latest revision as of 12:58, 3 December 2023

Cerinţa[edit | edit source]

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

Se dă un şir cu n elemente, numere naturale. Să se afişeze elementele şirului care sunt termeni ai şirului lui Fibonacci.

Se va defini şi apela o funcţie fibo care verifică dacă un număr natural, transmis ca parametru, face parte din şirul lui Fibonacci.

Date de intrare[edit | edit source]

Pe prima linie a fişierului fiboverif1.txt se află numărul n, iar pe a doua linie n numere naturale.

Date de ieşire[edit | edit source]

Pe prima linie a fişierului fiboverif2.txt se vor afla elementele şirului dat care sunt termeni ai şirului lui Fibonacci, separaţi prin exact un spaţiu.

Restricţii şi precizări[edit | edit source]

  • 1 ≤ n ≤ 10
  • elementele şirului vor avea cel mult 9 cifre

Exemplul 1[edit | edit source]

fiboverif1.txt:

8

13 1 8 24 21 55 47 8

fiboverif2.txt:

13 1 8 21 55 8

Exemplul 2[edit | edit source]

fiboverif1.txt:

0

13 1 8 24 21 55 47 8 9

Output consola: Numărul n trebuie să fie între 1 și 10.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def validate_input(n, sir):

   # Verificare pentru n
   if not (1 <= n <= 10):
       print("Numărul n trebuie să fie între 1 și 10.")
       return False
   # Verificare pentru fiecare element din șir
   for x in sir:
       if not (1 <= x <= 999999999):
           print("Elementele șirului trebuie să fie numere naturale cu cel mult 9 cifre.")
           return False
   return True

def fibo(numar):

   a, b = 0, 1
   while a <= numar:
       if a == numar:
           return True
       a, b = b, a + b
   return False

def main():

   # Citire date de intrare din fisier
   with open("fiboverif1.txt", "r") as f:
       n = int(f.readline())
       sir = list(map(int, f.readline().split()))
   # Verificare validitate input
   if not validate_input(n, sir):
       return
   # Afișare elemente din șir care sunt termeni ai șirului lui Fibonacci
   rezultat = [str(x) for x in sir if fibo(x)]
   # Scriere rezultat in fisier
   with open("fiboverif2.txt", "w") as f:
       f.write(" ".join(rezultat))

if __name__ == "__main__":

   main()

</syntaxhighlight>