4056 - kresturi

From Bitnami MediaWiki
Revision as of 20:23, 30 October 2023 by Zmicala Narcis (talk | contribs)

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

<syntaxhighlight lang="python" line> 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()

if __name__ == "__main__":

   n = 3
   arr = [2, 4, 3]
   resturi(n, arr)

</syntaxhighlight>