4056 - kresturi

De la Universitas MediaWiki
Versiunea din 30 octombrie 2023 20:21, autor: Zmicala Narcis (discuție | contribuții) (Pagină nouă: == Cerinţa == Dându-se un șir cu '''n''' elemente numere naturale (cu indicii de la '''0'''), să se construiască pentru fiecare element din șir câte un tabel al claselor de resturi asociat prin înmulțire dacă indicele elementului este impar, respectiv prin adunare dacă indicele elementului este par. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi cele '''n''' numere naturale din șir, separate prin spații. == Date de ieşire ==...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Cerinţa

Dându-se un șir cu n elemente numere naturale (cu indicii de la 0), să se construiască pentru fiecare element din șir câte un tabel al claselor de resturi asociat prin înmulțire dacă indicele elementului este impar, respectiv prin adunare dacă indicele elementului este par.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi cele n numere naturale din șir, separate prin spații.

Date de ieşire

Programul va afișa pe ecran în câte un tabel pentru fiecare element din șir, construit conform cerinței, în ordinea generării. Valorile din fiecare tabel se vor afișa linie cu linie, în cadrul fiecarei linii din tabel valorile fiind separate prin câte un spațiu.

Restricții și precizări

  • 1 ≤ n ≤ 20
  • cele n numere citite sunt numere naturale din intervalul închis [2,10]

Exemplu

Intrare
3
2 4 3
Ieșire
0 1
1 0
0 0 0 0
0 1 2 3
0 2 0 2
0 3 2 1
0 1 2
1 2 0
2 0 1

Explicație

S-au citit 3 numere. Se vor construi pe rând tabelele de resturi prin adunare pentru k=2, prin înmulțire pentru k=4 și prin adunare pentru k=3.

Rezolvare

def resturi(n, arr):
    for i in range(n):
        k = arr[i]
        if i % 2 == 0:  # adunare
            for j in range(k):
                print(' '.join(str((j + l) % k) for l in range(k)))
        else:  # inmultire
            for j in range(k):
                print(' '.join(str((j * l) % k) for l in range(k)))
        print()

n = 3
arr = [2, 4, 3]

resturi(n, arr)