0229 - Gen Mat 16
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
if __name__ == "__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.")
</syntaxhighlight>