CodeForces 400C
2015-10-31 14:47
183 查看
链接:点击打开链接
题意:在一个n*m的矩阵中,有q个数字放在不同的位置上,经过x次顺时针旋转,y次轴对称,z次逆时针旋转后,输出q个数字的位置
代码:
题意:在一个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; }
相关文章推荐
- Mr. Process的一生-Linux内核的社会视角(1)-启动
- OC学习 第六章 NSArray
- 第 四 十 四 天:虚 拟 化 简 介 - 创 建
- Python操作Redis之集合
- Oracle 12C -- plug unplugged PDB into CDB
- Android性能优化典范 - 第2季
- The application you have selected does not exist,Xcode 提交失败
- 小解RAID
- [IR课程笔记]Hyperlink-Induced Topic Search(HITS)
- ios学习笔记(三)简单动画
- ios学习笔记(三)简单动画
- 在Android studio中进行NDK开发
- 权限框架——CAS之工作原理
- coderforce 569B Inventory
- loadrunner中切割字符串
- Android性能优化典范
- 模拟题_Loli的排列组合
- 使用百宝云搭建注册码云服务器系统
- Mat for Adding and Multiple by cuda
- Autofs自动挂载服务