0229 - Gen Mat 16

From Bitnami MediaWiki
Revision as of 22:16, 21 April 2023 by Adina Timiș (talk | contribs) (Pagină nouă: ==Cerința== Se consideră şirul lui Fibonacci, definit astfel: <math>f1=1 , f2=1 , fn=fn-1+fn-2</math>, dacă <math>n</math>>2. Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte în memorie o matrice cu n linii şi n coloane ale cărei elemente sunt numere naturale, fiecare reprezentând ultima cifră a câte unui termen al şirului lui Fibonacci, începând de la termenul de indice 1 şi până la termenul de indice <math>n^2</math>....)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

Se consideră şirul lui Fibonacci, definit astfel: , dacă >2. Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte în memorie o matrice cu n linii şi n coloane ale cărei elemente sunt numere naturale, fiecare reprezentând ultima cifră a câte unui termen al şirului lui Fibonacci, începând de la termenul de indice 1 şi până la termenul de indice .

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Programul afișează pe ecran matricea construită, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu.

Restricții și precizări

  • 3 ≤ n ≤ 24;

Exemplul 1

Intrare
4
Ieșire
Datele de intrare corespund restricțiilor impuse.
1 1 2 3
5 8 3 1
4 5 9 4
3 7 0 7

Exemplul 2

Intrare
1
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

<syntaxhighlight lang="python" line="">

  1. 0229 - Gen Mat 16

def last_digit_fibonacci(n):

   # inițializăm lista cu primele două numere din șirul lui Fibonacci
   last_digits = [1, 1]
   # calculăm ultimele cifre pentru restul numerelor din șirul lui Fibonacci
   for i in range(2, n * n):
       last_digits.append((last_digits[i-1] + last_digits[i-2]) % 10)
   return last_digits

def build_fibonacci_matrix(n):

   # calculăm ultima cifră a fiecărui termen din șirul lui Fibonacci
   last_digits = last_digit_fibonacci(n)
   # construim matricea și adăugăm ultimele cifre calculate
   matrix = []
   for i in range(n):
       row = []
       for j in range(n):
           row.append(last_digits[i*n+j])
       matrix.append(row)
   return matrix

def main():

   # citim n de la tastatură
   n = int(input("Introduceti n: "))
   # verificăm restricțiile
   if n >= 3 and n <= 24:
       # construim matricea și o afișăm pe ecran
       matrix = build_fibonacci_matrix(n)
       print("Datele de intrare corespund restricțiilor impuse.")
       for row in matrix:
           print(" ".join(map(str, row)))
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

if __name__ == "__main__":

   main()
   

</syntaxhighlight>