codeforces C. Inna and Huge Candy Matrix
http://codeforces.com/problemset/problem/400/C
题意:给你一个n*m的矩阵,然后在矩阵中有p个糖果,给你每个糖果的初始位置,然后经过x次顺时针反转,y次旋转,z次逆时针反转,问最后每个糖果的位置。
思路:推出顺时针反转、旋转、逆时针反转的坐标的变化即可。
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <iostream> 5 #define maxn 100010 6 #include <algorithm> 7 using namespace std; 8 9 int n,m,x,y,z,k; 10 struct node 11 { 12 int x,y; 13 } p[maxn]; 14 15 int main() 16 { 17 scanf("%d%d%d%d%d%d",&n,&m,&x,&y,&z,&k); 18 for(int i=1; i<=k; i++) 19 { 20 scanf("%d%d",&p[i].x,&p[i].y); 21 } 22 x%=4; 23 y%=2; 24 z%=4; 25 for(int i=1; i<=k; i++) 26 { 27 int nn=n,mm=m,xx,yy; 28 for(int j=1; j<=x; j++) 29 { 30 xx=p[i].x; 31 yy=p[i].y; 32 p[i].x=yy; 33 p[i].y=nn-xx+1; 34 swap(nn,mm); 35 } 36 for(int j=1; j<=y; j++) 37 { 38 xx=p[i].x; 39 yy=p[i].y; 40 p[i].x=xx; 41 p[i].y=mm-yy+1; 42 } 43 for(int j=1; j<=z; j++) 44 { 45 xx=p[i].x; 46 yy=p[i].y; 47 p[i].x=mm-yy+1; 48 p[i].y=xx; 49 swap(nn,mm); 50 } 51 } 52 for(int i=1; i<=k; i++) 53 { 54 printf("%d %d\n",p[i].x,p[i].y); 55 } 56 return 0; 57 }