Fiind date două tablouri bidimensionale a
şi b
, cu m
linii şi n
coloane fiecare, definim următoarele operaţii:
1. suma tablourilor a
şi b
, ca fiind un tablou c
cu m
linii şi n
coloane, în care fiecare element este egal cu suma elementelor de pe aceeași linie şi aceeași coloană din a
şi b
. În acest caz folosim operatorul +
, adică c=a+b
.
2. produsul tablourilor a
şi b
, ca fiind un tablou d
cu m
linii şi n
coloane, în care fiecare element este egal cu produsul elementelor de pe aceeași linie şi aceeași coloană din a
şi b
. În acest caz folosim operatorul *
, adică d=a*b
. Dacă a
şi b
sunt tablouri identice (a
şi b
au elemente identice pe aceeaşi poziţie), atunci pentru d
se mai foloseşte şi notaţia a
2
sau b
2
.
De exemplu, pentru m=2
, n=3
şi tablourile:
se obține:
Cerința
Fiind dat un tablou bidimensional a
, cu m
linii, n
coloane şi componente numere naturale dorim să determinăm un şir de tablouri bidimensionale: b
1
, b
2
, …, b
k
cu număr minim de termeni (k
minim), cu proprietatea că a
=b
1
2
+b
2
2
...+b
k
2
.
Date de intrare
Fișierul de intrare operatii.in
conține pe prima linie numerele naturale m
şi n
separate prin câte un spaţiu. Pe umătoarele m
linii se află elementele tabloului a
, câte n
numere pe o linie, în cadrul unei linii numerele fiind separate între ele prin câte un spaţiu.
Date de ieșire
Fișierul de ieșire operatii.out
va conține pe prima linie un număr natural reprezentând valoarea k
, apoi pe următoarele k*m
linii elementele celor k
tablouri b
1
, b
2
, …, b
k
. Fiecare dintre aceste tablouri va fi scris pe câte m
linii consecutive, iar pe fiecare dintre aceste linii se vor afla câte n
numere separate prin câte un spaţiu.
Restricții și precizări
1 ≤ m,n ≤ 200
- Componentele tabloului
a
sunt numere naturale≤ 10000
. - Pot exista mai multe soluții, dar în fişierul de ieşire se va scrie una dintre ele.
30%
din teste au componentele tablouluia
mai mici sau cel mult egale cu100
şim,n≤ 100
.60%
din teste au componentele tablouluia
mai mici sau cel mult egale cu1000
.
Exemplu:
operatii.in
2 3 1 2 4 5 5 9
operatii.out
2 1 1 0 2 2 3 0 1 2 1 1 0