#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
class Matx_Op
{
int row, col, i, j;
float k;
public :
void Scalar_Mulp()
{
cin >> k; //Input scalar
cin >> row >> col; //Input dimension
float A[row][col];
for (i=0; i<row; i++)
{
for (j=0; j<col; j++)
{
cin >> A[i][j] ; //Input matrix
}
}
for (i=0; i<row; i++)
{
for (j=0; j<col; j++)
{
cout << fixed << setprecision(1) << k*A[i][j] << " " ; //Output resultant matrix
}
cout << endl;
}
}
void matx_mulp()
{
int p,q,r,s;
cin >> p >> q; //Input dimensions of first matrix
int A[p][q];
for (i=0; i<p; i++)
{
for (j=0; j<q; j++)
{
cin >> A[i][j] ; //Input matrix
}
}
cin >> r >> s; //Input dimensions of second matrix
int B[r][s];
for (i=0; i<r; i++)
{
for (j=0; j<s; j++)
{
cin >> B[i][j] ; //Input matrix
}
}
if(q==r)
{
int C[p][s];
for (i=0; i<p; i++)
{
for (j=0; j<s; j++)
{
C[i][j] = 0;
for (int d=0; d<q; d++)
{
C[i][j] += A[i][d]*B[d][j] ;
}
}
}
for (i=0; i<p; i++)
{
for (j=0; j<s; j++)
{
cout << C[i][j] << " " ; //Output resultant matrix
}
cout << endl;
}
}
}
void matx_add()
{
int p,q,r,s;
cin >> p >> q; //Input dimensions of first matrix
int A[p][q];
for (i=0; i<p; i++)
{
for (j=0; j<q; j++)
{
cin >> A[i][j] ; //Input matrix
}
}
cin >> r >> s; //Input dimensions of second matrix
int B[r][s];
for (i=0; i<r; i++)
{
for (j=0; j<s; j++)
{
cin >> B[i][j] ; //Input matrix
}
}
if(p==r && q==s)
{
int C[p][r];
for (i=0; i<p; i++)
{
for (j=0; j<r; j++)
{
C[i][j] = A[i][j] + B[i][j];
}
}
for (i=0; i<p; i++)
{
for (j=0; j<r; j++)
{
cout << C[i][j] << " " ;
}
cout << endl;
}
}
}
void conc()
{
int num, k, i, j, r=0, c=0;
cin >> num ; //Input number of matrices
for (k=1; k<=num; k++)
{
cin >> row >> col;
int A[row][col];
for (i=0; i<row; i++)
{
for (j=0; j<col; j++)
{
cin >> A[i][j];
}
}
int C[50][50];
for (int r; r<row; r++)
{
for (int c; c<col; c++)
{
C[r][c] = A[r][c];
}
}
r= row;
c= col;
for (i=0; i<row; i++)
{
for (j=0; j<col; j++)
{
cout << A[i][j] << " " ;
}
cout << endl;
}
}
}
};
int main()
{
Matx_Op Matrix; // Operation to be performed..
int check;
cin >> check; //Input function to be performed
if (check==1)
{
Matrix.Scalar_Mulp();
}
else if (check==2)
{
Matrix.matx_mulp() ;
}
else if (check==3)
{
Matrix.matx_add() ;
}
else
{
Matrix.conc() ;
}
return 0;
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBNYXR4X09wCnsKICAgIGludCByb3csIGNvbCwgaSwgajsKICAgIGZsb2F0IGs7CiAgICBwdWJsaWMgOgogICAgdm9pZCBTY2FsYXJfTXVscCgpCiAgICB7CiAgICAgICAgY2luID4+IGs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9JbnB1dCBzY2FsYXIKICAgICAgICBjaW4gPj4gcm93ID4+IGNvbDsgICAgICAgICAgICAgICAgICAvL0lucHV0IGRpbWVuc2lvbgogICAgICAgIGZsb2F0IEFbcm93XVtjb2xdOwogICAgICAgIGZvciAoaT0wOyBpPHJvdzsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChqPTA7IGo8Y29sOyBqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNpbiA+PiBBW2ldW2pdIDsgICAgICAgICAgICAvL0lucHV0IG1hdHJpeAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAoaT0wOyBpPHJvdzsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChqPTA7IGo8Y29sOyBqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDEpIDw8IGsqQVtpXVtqXSA8PCAiICIgOyAgICAgICAgICAgIC8vT3V0cHV0IHJlc3VsdGFudCBtYXRyaXgKICAgICAgICAgICAgfQogICAgICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICAgICAgfQogICAgfQogICAKICAgIHZvaWQgbWF0eF9tdWxwKCkKICAgIHsKICAgICAgICBpbnQgcCxxLHIsczsKICAgICAgICBjaW4gPj4gcCA+PiBxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy9JbnB1dCBkaW1lbnNpb25zIG9mIGZpcnN0IG1hdHJpeAogICAgICAgIGludCBBW3BdW3FdOwogICAgICAgIGZvciAoaT0wOyBpPHA7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaj0wOyBqPHE7IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2luID4+IEFbaV1bal0gOyAgICAgICAgICAgIC8vSW5wdXQgbWF0cml4CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2luID4+IHIgPj4gczsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSW5wdXQgZGltZW5zaW9ucyBvZiBzZWNvbmQgbWF0cml4CiAgICAgICAgaW50IEJbcl1bc107CiAgICAgICAgZm9yIChpPTA7IGk8cjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChqPTA7IGo8czsgaisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaW4gPj4gQltpXVtqXSA7ICAgICAgICAgICAgLy9JbnB1dCBtYXRyaXgKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihxPT1yKQogICAgICAgIHsKICAgICAgICAgICAgaW50IENbcF1bc107CiAgICAgICAgICAgIGZvciAoaT0wOyBpPHA7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaj0wOyBqPHM7IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ1tpXVtqXSA9IDA7CiAgICAgICAgICAgICAgICBmb3IgKGludCBkPTA7IGQ8cTsgZCsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENbaV1bal0gKz0gQVtpXVtkXSpCW2RdW2pdIDsgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgICAgIGZvciAoaT0wOyBpPHA7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaj0wOyBqPHM7IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY291dCA8PCBDW2ldW2pdIDw8ICIgIiA7ICAgICAgICAgICAgLy9PdXRwdXQgcmVzdWx0YW50IG1hdHJpeAogICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgdm9pZCBtYXR4X2FkZCgpCiAgICB7CiAgICAgICAgaW50IHAscSxyLHM7CiAgICAgICAgY2luID4+IHAgPj4gcTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSW5wdXQgZGltZW5zaW9ucyBvZiBmaXJzdCBtYXRyaXgKICAgICAgICBpbnQgQVtwXVtxXTsKICAgICAgICBmb3IgKGk9MDsgaTxwOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IgKGo9MDsgajxxOyBqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNpbiA+PiBBW2ldW2pdIDsgICAgICAgICAgICAvL0lucHV0IG1hdHJpeAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNpbiA+PiByID4+IHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvL0lucHV0IGRpbWVuc2lvbnMgb2Ygc2Vjb25kIG1hdHJpeAogICAgICAgIGludCBCW3JdW3NdOwogICAgICAgIGZvciAoaT0wOyBpPHI7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaj0wOyBqPHM7IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2luID4+IEJbaV1bal0gOyAgICAgICAgICAgIC8vSW5wdXQgbWF0cml4CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYocD09ciAmJiBxPT1zKQogICAgICAgIHsKICAgICAgICAgICAgaW50IENbcF1bcl07CiAgICAgICAgICAgIGZvciAoaT0wOyBpPHA7IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChqPTA7IGo8cjsgaisrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENbaV1bal0gPSBBW2ldW2pdICsgQltpXVtqXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvciAoaT0wOyBpPHA7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaj0wOyBqPHI7IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY291dCA8PCBDW2ldW2pdIDw8ICIgIiA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dCA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KICAgIH0KICAgIAogICAgdm9pZCBjb25jKCkKICAgIHsKICAgICAgICBpbnQgbnVtLCBrLCBpLCBqLCByPTAsIGM9MDsKICAgICAgICBjaW4gPj4gbnVtIDsgICAgICAgICAgICAgICAgICAgIC8vSW5wdXQgbnVtYmVyIG9mIG1hdHJpY2VzCiAgICAgICAgZm9yIChrPTE7IGs8PW51bTsgaysrKQogICAgICAgIHsKICAgICAgICAgICAgY2luID4+IHJvdyA+PiBjb2w7CiAgICAgICAgICAgIGludCBBW3Jvd11bY29sXTsKICAgICAgICAgICAgZm9yIChpPTA7IGk8cm93OyBpKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqPGNvbDsgaisrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNpbiA+PiBBW2ldW2pdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpbnQgQ1s1MF1bNTBdOwogICAgICAgICAgICBmb3IgKGludCByOyByPHJvdzsgcisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgIAlmb3IgKGludCBjOyBjPGNvbDsgYysrKQogICAgICAgICAgICAJewogICAgICAgICAgICAJCUNbcl1bY10gPSBBW3JdW2NdOwogICAgICAgICAgICAJfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHI9IHJvdzsKICAgICAgICAgICAgYz0gY29sOwogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgZm9yIChpPTA7IGk8cm93OyBpKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgCWZvciAoaj0wOyBqPGNvbDsgaisrKQogICAgICAgICAgICAJewogICAgICAgICAgICAJCWNvdXQgPDwgQVtpXVtqXSA8PCAiICIgOwogICAgICAgICAgICAJfQogICAgICAgICAgICAJY291dCA8PCBlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgICAgCiAgICAgICAgfQogICAgfQp9OwoKaW50IG1haW4oKSAKewogICAgTWF0eF9PcCBNYXRyaXg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uIHRvIGJlIHBlcmZvcm1lZC4uCiAgICBpbnQgY2hlY2s7CiAgICBjaW4gPj4gY2hlY2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSW5wdXQgZnVuY3Rpb24gdG8gYmUgcGVyZm9ybWVkCiAgICAKICAgICAgICAgICAgaWYgKGNoZWNrPT0xKSAgICAgCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE1hdHJpeC5TY2FsYXJfTXVscCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrPT0yKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBNYXRyaXgubWF0eF9tdWxwKCkgOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrPT0zKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBNYXRyaXgubWF0eF9hZGQoKSAgOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTWF0cml4LmNvbmMoKSA7CiAgICAgICAgICAgIH0KICAgIHJldHVybiAwOwp9Cg==