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.")