CodeForces 400C

来源:互联网 发布:观察宇宙的软件 编辑:程序博客网 时间:2024/06/02 07:30

链接:点击打开链接

题意:在一个n*m的矩阵中,有q个数字放在不同的位置上,经过x次顺时针旋转,y次轴对称,z次逆时针旋转后,输出q个数字的位置

代码:

#include <set>#include <stack>#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <stdlib.h>#include <algorithm>using namespace std;struct node{    long long x,y;}s[100005];int main(){                                                                  //也可以用矩阵乘法进行旋转    long long n,m,x,y,z,q;    long long i,a,b,temp,temp1;    while(cin>>n>>m>>x>>y>>z>>q){        for(i=1;i<=q;i++)        s[i].x=s[i].y=0;        for(i=1;i<=q;i++){           cin>>a>>b;           s[i].x=a,s[i].y=b;        }        if(x%4==1){        for(i=1;i<=q;i++){            temp=s[i].x;temp1=s[i].y;            s[i].x=temp1;            s[i].y=n-temp+1;        }        swap(n,m);        }        if(x%4==2){        for(i=1;i<=q;i++){            temp=s[i].x;temp1=s[i].y;            s[i].x=n-temp+1;            s[i].y=m-temp1+1;        }        }        if(x%4==3){        for(i=1;i<=q;i++){            temp=s[i].x;temp1=s[i].y;            s[i].x=m-temp1+1;            s[i].y=temp;        }        swap(n,m);                                                          //注意旋转是要m,n        }//        for(i=1;i<=9;i++){//            cout<<s[i].x<<" "<<s[i].y<<" ";//            if(i%3==0)//            cout<<endl;//        }        //zhou        if(y%2){        for(i=1;i<=q;i++){            s[i].y=m-s[i].y+1;        }        }        //ni        if(z%4==1){        for(i=1;i<=q;i++){           temp=s[i].x;temp1=s[i].y;            s[i].x=m-temp1+1;            s[i].y=temp;        }        swap(n,m);        }        if(z%4==2){        for(i=1;i<=q;i++){            temp=s[i].x;temp1=s[i].y;            s[i].x=n-temp+1;            s[i].y=m-temp1+1;        }        }        if(z%4==3){        for(i=1;i<=q;i++){           temp=s[i].x;temp1=s[i].y;            s[i].x=temp1;            s[i].y=n-temp+1;        }        swap(n,m);        }        for(i=1;i<=q;i++)        printf("%I64d %I64d\n",s[i].x,s[i].y);    }    return 0;}


0 0