0229 - Gen Mat 16

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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