ZOJ1042
2016-01-25 12:23
246 查看
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=42
解密的题最恶心了
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/crazy.gif)
小组内部的移动,与其他小组无关。比如说第一个样例的第一组为 icbfhe ,在密文中的位置分别为(2,3,7,8,11,17),解密时向右移动两位变成(7,8,11,17,2,3),只要让第一组密文分别移动到相应的位置就可以了。
(PS:如果复制代码的话,一定要记得做相应的改变,不然会死人的
![](https://oscdn.geek-share.com/Uploads/Images/Content/201711/cb4e94c34df3079bd70c302064bdba33.gif)
)
解密的题最恶心了
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/crazy.gif)
小组内部的移动,与其他小组无关。比如说第一个样例的第一组为 icbfhe ,在密文中的位置分别为(2,3,7,8,11,17),解密时向右移动两位变成(7,8,11,17,2,3),只要让第一组密文分别移动到相应的位置就可以了。
(PS:如果复制代码的话,一定要记得做相应的改变,不然会死人的
![](https://oscdn.geek-share.com/Uploads/Images/Content/201711/cb4e94c34df3079bd70c302064bdba33.gif)
)
#include<iostream> #include<cstring> using namespace std; char cipher[100],plain[100]; int groupNum[100]; char groupChar[100]; int k1,k2,k3; int main() { while (cin>>k1>>k2>>k3 && (k1+k2+k3 != 0)) { memset(cipher,0,sizeof(cipher)); memset(plain,0,sizeof(plain)); cin>>cipher; memset(groupNum,0,sizeof(groupNum)); memset(groupChar,0,sizeof(groupChar)); for (int i=0; i<strlen(cipher); i++) if (cipher[i] >= 'a' && cipher[i] <= 'i') { groupNum[0]++; groupNum[groupNum[0]] = i; groupChar[groupNum[0]] = cipher[i]; } for (int k=0; k<k1; k++) { int tmp = groupNum[1]; for (int i=1; i<=groupNum[0]-1; i++) groupNum[i] = groupNum[i+1]; groupNum[groupNum[0]] = tmp; } for (int i=1; i<=groupNum[0]; i++) plain[groupNum[i]] = groupChar[i]; memset(groupNum,0,sizeof(groupNum)); memset(groupChar,0,sizeof(groupChar)); for (int i=0; i<strlen(cipher); i++) if (cipher[i] >= 'j' && cipher[i] <= 'r') { groupNum[0]++; groupNum[groupNum[0]] = i; groupChar[groupNum[0]] = cipher[i]; } for (int k=0; k<k2; k++) { int tmp = groupNum[1]; for (int i=1; i<=groupNum[0]-1; i++) groupNum[i] = groupNum[i+1]; groupNum[groupNum[0]] = tmp; } for (int i=1; i<=groupNum[0]; i++) plain[groupNum[i]] = groupChar[i]; memset(groupNum,0,sizeof(groupNum)); memset(groupChar,0,sizeof(groupChar)); for (int i=0; i<strlen(cipher); i++) if (cipher[i] >= 's' && cipher[i] <= 'z' || cipher[i] == '_') { groupNum[0]++; groupNum[groupNum[0]] = i; groupChar[groupNum[0]] = cipher[i]; } for (int k=0; k<k3; k++) { int tmp = groupNum[1]; for (int i=1; i<=groupNum[0]-1; i++) groupNum[i] = groupNum[i+1]; groupNum[groupNum[0]] = tmp; } for (int i=1; i<=groupNum[0]; i++) plain[groupNum[i]] = groupChar[i]; cout<<plain<<endl; } return 0; }
相关文章推荐
- 度量术语之二:应用类和开发类生产率(实际度量案例)
- PHP代码维护,重构变困难的4种原因分析
- 设置JAVA路径、TOMCAT路径、启动TOMCAT、启动浏览器
- SQL Server 触发器
- solr-4.10.0、tomcat7、IKAnalyzer2012FF_u1中文分词器相整合以及相关配置
- 半小时学会上传本地项目到github
- Android系统之路(初识MTK) ------ make update-api长按Power键添加Reboot项/内置默认Ringtone/SMS/Notification/Alarm删除系统铃声
- Android开发中通过源码彻底理解ListView工作原理【超详细】
- js String对象中常用方法小结(字符串操作)
- -canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"
- 在U8菜单中增加自定义项
- 获取标题栏和状态栏的高度
- 寒風的Cocos之旅之Lua篇---2048移动块的机制
- 《Python项目开发实战》--熟悉Python基础后我能做什么?
- 如何快速复制阿里巴巴的互联网架构?
- poj 1012 Joseph
- 变量.ToString()
- Leetcode 225. Implement Stack using Queues
- 将博客搬至CSDN
- 80x86 汇编语言:猜数游戏