Problem Description
After the 32nd ACM/ICPC regional contest, Wiskey is beginning to prepare for CET-6. He has an
English words table and read it every morning.
One day, Wiskey's chum wants to play a joke on him. He rolling the table, and tell Wiskey how
many time he rotated. Rotate 90 degrees clockwise or count-clockwise each time.
The table has n*n grids. Your task is tell Wiskey the final status of the table.
Input
Each line will contain two number.
The first is postive integer n (0 < n <= 10).
The seconed is signed 32-bit integer m.
if m is postive, it represent rotate clockwise m times, else it represent rotate count-clockwise -m
times.
Following n lines. Every line contain n characters.
Output
Output the n*n grids of the final status.
Sample Input
3 2
123
456
789
3 -1
123
456
789
Sample Output
987
654
321
369
258
147
#include <cstdio>
#include <string>
#include <iostream>
const int MAX = 11;
char grids[MAX][MAX];
int main(int argc, const char* argv[])
{
int n, m;
while (std::cin >> n >> m)
{
std::cin.get();
for (int i=0; i<n; ++i)
{
for (int j=0; j<n; ++j)
{
std::cin >> grids[i][j];
}
std::cin.get();
}
m %= 4;
if (m<0)
{
m += 4;
}
switch (m)
{
case 0:
{
for (int i=0; i<n; ++i)
{
for (int j=0; j<n; ++j)
{
printf("%c", grids[i][j]);
}
printf("\n");
}
break;
}
case 1:
{
for (int j=0; j<n; ++j)
{
for (int i=n-1; i>=0; --i)
{
printf("%c", grids[i][j]);
}
printf("\n");
}
break;
}
case 2:
{
for (int i=n-1; i>=0; --i)
{
for (int j=n-1; j>=0; --j)
{
printf("%c", grids[i][j]);
}
printf("\n");
}
break;
}
case 3:
{
for (int j=n-1; j>=0; --j)
{
for (int i=0; i<n; ++i)
{
printf("%c", grids[i][j]);
}
printf("\n");
}
break;
}
default:
break;
}
}
return 0;
}