/**
LAST, First name: ALEXANDRESCU Andrei
School: National College "Andrei
Saguna" Brasov
Contest #4
Problem: maxtrix
in/out file: matrix.in/matrix.out
*/
#include
<iostream>
#include
<stdio.h>
using namespace
std;
char s[128], *p,
what, cuv[128];
int boom;
int may[5][5];
int nd,
bloc[100][100];
void inmulteste()
{
int care = 1, i, rez, j;
for(i = 0; i <= nd; i++)
{
for(care = 1; care <= 2; care++)
{
rez = 0;
for(j = 1; j <= 2; j++)
rez += may[care][j] *
bloc[i][j];
if(rez > 27)
rez %= 27;
while(rez <= 0)
rez += 27;
if(rez == 27)
printf(" ");
else printf("%c", 'A' + rez -
1);
}
}
printf("\n");
}
void inverseaza()
{
int a, b, c, d, mic;
a = may[1][1];
b = may[1][2];
c = may[2][1];
d = may[2][2];
if(a * d - b * c == 0)
return;
else
{
mic = 1 / (a * d - b * c);
may[1][1] = d * mic;
may[1][2] = -b * mic;
may[2][1] = -c * mic;
may[2][2] = a * mic;
}
}
int main()
{
freopen
("matrix.in","r",stdin);
freopen ("matrix.out","w",stdout);
int M = 5, i, j;
while(M--)
{
nd = 0;
fgets(s, 128, stdin);
p = s; what = *p;
p += 3;
i = 0;
while(*p != ',')
{
//cuv[boom++] = *p;
if(i == 2)
i = 0, nd++;
if(*p == ' ')
bloc[nd][++i] = 27;
else bloc[nd][++i] = *p - 'A' + 1;
p++;
}
if(i == 1)
bloc[nd][++i] = 27;
p += 2;
for(i = 1; i <= 2; i++)
for(j = 1; j <= 2; j++, p += 3)
may[i][j] = *p - '0';
if(what == 'E')
{
inmulteste();
}
else
{
inverseaza();
inmulteste();
}
}
return 0;
}