codeforces 400C Inna and Huge Candy Matrix
2015-10-31 16:07
501 查看
题目链接:http://codeforces.com/problemset/problem/400/C
题目大意:
给出一个n*m的矩阵,其中有p个格子里边有糖果,知道这p个格子现在的位置,现在要将这个n*m的矩阵顺时针旋转x次,水平翻转y次,逆时针旋转z次,最后输出原来的p个有糖果的格子现在的坐标
解题思路:顺时针旋转一次(x,y)--->(y,n+1-x)
顺时针旋转二次(x,y)--->(n+1-x,m+1-y)
顺时针旋转三次(x,y)--->(m+1-y,x)
顺时针旋转四次(x,y)--->(x,y)
水平翻转一次(x,y)--->(x,m+1-y)
水平翻转一次(x,y)--->(x,y)
代码:
题目大意:
给出一个n*m的矩阵,其中有p个格子里边有糖果,知道这p个格子现在的位置,现在要将这个n*m的矩阵顺时针旋转x次,水平翻转y次,逆时针旋转z次,最后输出原来的p个有糖果的格子现在的坐标
解题思路:顺时针旋转一次(x,y)--->(y,n+1-x)
顺时针旋转二次(x,y)--->(n+1-x,m+1-y)
顺时针旋转三次(x,y)--->(m+1-y,x)
顺时针旋转四次(x,y)--->(x,y)
水平翻转一次(x,y)--->(x,m+1-y)
水平翻转一次(x,y)--->(x,y)
代码:
#include <iostream> #include <stdio.h> using namespace std; int main() { int n,m,x,y,z,p; int xi,yi; int flag; while(cin>>n>>m>>x>>y>>z>>p) { while(p--) { scanf("%d%d",&xi,&yi); for(int i=1;i<=(x%4);i++) { long long tmp=xi; if(i==2) {xi=yi; yi=m+1-tmp;} else{ xi=yi; yi=n+1-tmp;} } if((x%4)==1||(x%4)==3) {swap(n,m); flag=1; } // cout<<xi<<" "<<yi<<endl; for(int i=0;i<=y%2+1;i++) { yi=m+1-yi; } //cout<<xi<<" "<<yi<<endl; int s=(4-z%4); //cout<<s<<endl; for(int i=1;i<=s;i++) { long long tmp=xi; if(i==2||i==4) {xi=yi; yi=m+1-tmp;} else{ xi=yi; yi=n+1-tmp;} } printf("%d %d\n",xi,yi); if(flag) { swap(n,m); flag=0; } } } return 0; }
相关文章推荐
- [THINKPHP] 温故知新之getFieldBy
- [置顶] Python验证码识别处理实例
- Git常用命令总结
- Web站点崩溃常见原因
- UISearchBar和UISearchDisplayController
- 在Unity3D中使用ScriptableObject进行序列化
- POJ-2328
- gradle project refresh failed: protocol family unavailable
- 使用Div+CSS布局设计网站的优点
- iOS NSNotification的使用
- IOS观察者模式与通知中心
- libgdx中Texturepacker打包小图片为大图片
- Java Servlet原理学习(一)
- android上引入七牛 上传图片或者文件 最终整理版本(可用)
- android的Touch事件的消费机制
- 使用生态分布生成随机数
- 修改app的名字
- 通知与消息机制
- cf(思维,数学)
- ios开发-Objective-C之内存管理机制