NBUT1478:泄密的图片
2013-07-20 16:49
183 查看
http://ac.nbutoj.com/Problem/view.xhtml?id=1478
问题描述
斯诺登的泄密真是让美国捉襟见肘。今天他偷偷给艾丽叶发了一些数据,说是美国秘密拍摄的一些图片。可是都是四个矩阵为一组的写满数字的数据,要怎么看呢?好在人家发话了:为了不被发现是秘密图片,他把这些图片颜色拆分到三张图中(图B、图C和图D)。第一幅图(图A)是计算最终图片的公式,不过他不能直接透露公式是什么,需要艾丽叶酱自行探索。已知的公式是:
1.第一幅图某个像素点是1的话,那最终图同样位置的像素点就是图B的像素点
2.第一幅图某个像素点是3的话,那最终图同样位置的像素点就是图B对应位置的像素点加上图C对应位置的像素点
3.第一幅图某个像素点是4的话,那最终图同样位置的像素点就是图D的像素点
4.按照上述的推论,从1计算到7即可。若像素点不是1至7之间,那么最终图对应的位置的像素点就是0.
5.如果某个点的和大于等于9,那这个位置的像素点就是9.
艾丽叶没几分钟就发现了所有的秘密,你呢?
输入
第一行是总组数。
第二三行表明了矩阵的列数与行数(不超过200)。
接下来是公式图的像素点(值范围为1到7)。
最后是三张图片的像素点(值范围为1到9)。
输出
对于每组数据,输出其最终图片,即计算结果。
样例输入
样例输出
题意:根据a,b,c,四个矩阵退出镜像矩阵
思路:根据题意与样例的输入,可以退出一下的对应关系
1:b
2:c
3:b+c
4:d
5:b+d
6:c+d
7:b+c+d
要注意如果初始矩阵位置大于7,则对应位置为0
和超过9,则对应位置为9
理解题意后就是水题
本来是水题,但是千万要注意的是,这里先输入的是列数,昨天比赛就坑在这里了,蛋疼
问题描述
斯诺登的泄密真是让美国捉襟见肘。今天他偷偷给艾丽叶发了一些数据,说是美国秘密拍摄的一些图片。可是都是四个矩阵为一组的写满数字的数据,要怎么看呢?好在人家发话了:为了不被发现是秘密图片,他把这些图片颜色拆分到三张图中(图B、图C和图D)。第一幅图(图A)是计算最终图片的公式,不过他不能直接透露公式是什么,需要艾丽叶酱自行探索。已知的公式是:
1.第一幅图某个像素点是1的话,那最终图同样位置的像素点就是图B的像素点
2.第一幅图某个像素点是3的话,那最终图同样位置的像素点就是图B对应位置的像素点加上图C对应位置的像素点
3.第一幅图某个像素点是4的话,那最终图同样位置的像素点就是图D的像素点
4.按照上述的推论,从1计算到7即可。若像素点不是1至7之间,那么最终图对应的位置的像素点就是0.
5.如果某个点的和大于等于9,那这个位置的像素点就是9.
艾丽叶没几分钟就发现了所有的秘密,你呢?
输入
第一行是总组数。
第二三行表明了矩阵的列数与行数(不超过200)。
接下来是公式图的像素点(值范围为1到7)。
最后是三张图片的像素点(值范围为1到9)。
输出
对于每组数据,输出其最终图片,即计算结果。
样例输入
1 3 3 123 456 722 111 111 111 222 222 222 333 333 333
样例输出
123 345 622
题意:根据a,b,c,四个矩阵退出镜像矩阵
思路:根据题意与样例的输入,可以退出一下的对应关系
1:b
2:c
3:b+c
4:d
5:b+d
6:c+d
7:b+c+d
要注意如果初始矩阵位置大于7,则对应位置为0
和超过9,则对应位置为9
理解题意后就是水题
本来是水题,但是千万要注意的是,这里先输入的是列数,昨天比赛就坑在这里了,蛋疼
#include <stdio.h> #include <string.h> char a[222][222],b[222][222],c[222][222],d[222][222]; int fun(int i,int j) { int k; if(a[i][j] == '1') k = b[i][j] - 48; else if(a[i][j] == '2') k = c[i][j] - 48; else if(a[i][j] == '4') k = d[i][j] - 48; else if(a[i][j] == '3') k = c[i][j] + b[i][j] - 48*2; else if(a[i][j] == '5') k = b[i][j] + d[i][j] - 48*2; else if(a[i][j] == '6') k = c[i][j] + d[i][j] - 48*2; else if(a[i][j] == '7') k = c[i][j] + d[i][j] + b[i][j] - 48*3; else k = 0; if(k>9) return 9; else return k; } int main() { int t,n,m,i,j; scanf("%d",&t); while(t--) { scanf("%d%d",&m,&n); for(i = 0; i<n; i++) scanf("%s",a[i]); for(i = 0; i<n; i++) scanf("%s",b[i]); for(i = 0; i<n; i++) scanf("%s",c[i]); for(i = 0; i<n; i++) scanf("%s",d[i]); for(i = 0; i<n; i++) { for(j = 0; j<m; j++) { printf("%d",fun(i,j)); } printf("\n"); } } }
相关文章推荐
- 在ASP.NET中存取图片到数据库
- 在ASP.NET中上传图片并生成缩略图的C#源码
- css图片滤镜大全
- GridView中添加图片显示
- Android应用中在ImageView中显示SD卡上的图片
- 你还在用jquery.lazyload这个坑爹的图片分屏加载插件么?
- 图片平面旋转
- FLEX3的图片文字滚动效果
- delphi读取webbrowse中的图片显示在Image中
- WPF图片背景平铺
- flex 访问服务器图片无法显示
- 自定义imageview 实现圆角 甚至圆形imageview(并不是将图片变圆角)
- 列表和添加编辑中的图片浮层放大
- 开源项目之UniversalImageLoader(异步加载大量图片)
- android 在图库中进行幻灯片播放时图片不会全屏显示
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- 图片上传预览功能实现
- java 粘贴图片
- 图片转文字
- CBitmapButton为按钮加载图片注意事项