0229 - Gen Mat 16
De la Universitas MediaWiki
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
#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.")