📄 [a]土豆星人的难题.cpp
字号:
#include <stdio.h>
#include <string.h>
int main()
{
const int MAX = 10;
typedef int matrix[MAX][MAX];
char query[3][10] = {"rotate", "roll", "add"};
matrix in, tmp;
int t, m, i, j, ncase;
//freopen("A.in", "r", stdin);
//freopen("A.out", "w", stdout);
scanf("%d", &ncase);
while(ncase--)
{
scanf("%d", &m);
for(i = 0; i < m; i++)
for(j = 0; j < m; j++)
scanf("%d", &in[i][j]);
scanf("%d", &t);
while(t--)
{
char tmp_query[10];
scanf("%s", tmp_query);
for(i = 0; i < 3; i++)
if(!strcmp(tmp_query, query[i]))
break;
if(i == 0)
{
int degree;
int k, h;
scanf("%d", °ree);
while(degree)
{
degree -= 90;
for(k = 0; k < m; k++)
for(h = 0; h < m; h++)
tmp[k][h] = in[m - h - 1][k];
for(k = 0; k < m; k++)
for(h = 0; h < m; h++)
in[h][k] = tmp[h][k];
}
}
else if(i == 1)
{
int method;
int k, h;
scanf("%s", tmp_query);
scanf("%d", &method);
if(method)
{
for(k = 0; k < m; k++)
for(h = 0; h < (m >> 1); h++)
{
in[k][h] = in[k][h] ^ in[k][m - h - 1];
in[k][m - h - 1] = in[k][h] ^ in[k][m - h - 1];
in[k][h] = in[k][h] ^ in[k][m - h - 1];
}
}
else
{
for(k = 0; k < (m >> 1); k++)
for(h = 0; h < m; h++)
{
in[k][h] = in[k][h] ^ in[m - k - 1][h];
in[m - k - 1][h] = in[k][h] ^ in[m - k - 1][h];
in[k][h] = in[k][h] ^ in[m - k - 1][h];
}
}
}
else
{
int tmp_num;
int k, h;
for(k = 0; k < m; k++)
for(h = 0; h < m; h++)
{
scanf("%d", &tmp_num);
in[k][h] += tmp_num;
}
}
}
for(i = 0; i < m; i++)
{
for(j = 0; j < m - 1; j++)
printf("%d ", in[i][j]);
printf("%d\n", in[i][j]);
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -