YTU 1010: 目标柏林
2016-01-17 18:05
218 查看
1010: 目标柏林
时间限制: 1000 Sec 内存限制: 64 MB提交: 32 解决: 15
题目描述
1945年初,苏军和英美联军已从东西两面攻入德国国境。 4月初,在苏军和英美联军的夹击下,德军只能龟缩在以柏林为中心的德国东部的狭长地带,成了瓮中之鳖。 但希特勒困兽犹斗,一方面发出摧毁一切设施,实行“焦土”政策的指令; 另一方面下令把德国分为南北两个行政区,各自作战,他自己则固守柏林。
在这一天,苏军结果一份传自柏林的加密电文。经初步破译,显示希特勒要调集100万兵力, 在柏林周围筑起了三层防卫圈,并集中3300架飞机,1500多辆坦克,1万门火炮和迫击炮,准备死守柏林。 形势很危机,我们需要马上破译所有密码。请你来遍个程序帮忙破译。
苏军知道德军用的加密方法是这样的: 1.获得一段文字后,求出它的长度(包括空格)len。 2.进入加密运算的第1步:把所有下标是1倍数的字符做顺时针旋转。 3.进入加密运算的第2步:把所有下标是2倍数的字符做逆时针旋转。 4.进入加密运算的第3步:把所有下标是3倍数的字符做顺时针旋转。 5.按上面的规则,第奇数步按顺时针旋转,偶数步按逆时针旋转,一直到第len步为止。
比如原文是:abcde 1.获得长度len = 5 2.1的倍数有1、2、3、4、5,所以把这5个字符按顺时针旋转,得到eabcd。 3.2的倍数有2、4,所以把这2个字符按逆时针旋转,得到ecbad。 4.3的倍数有3,所以把这1个字符按顺时针旋转,得到ecbad。 5.4的倍数有4,所以把这1个字符按逆时针旋转,得到ecbad。 6.5的倍数有5,所以把这1个字符按顺时针旋转,得到ecbad。 最后的结果是ecbad。
现在给你加密后的文章,让你还原成原来的文章。
输入
输入一篇加密后的文章,每行为一段。每段不超过1000个字符。 输入以文件结束(EOF)为止。
输出
输出解密后的文章。 每段一行。
样例输入
ecbad
样例输出
abcde
提示
C and C++ language can use : char input[1001]; while(gets(input)) { ... } 报告参见http://acm.zjgsu.edu.cn/Report/1009/1009.html
你 离 开 了 , 我 的 世 界 里 只 剩 下 雨 。 。 。
#include <stdio.h> #include <string.h> #define LEN 1000+10 void turn_right(char *c,int *a,int k) { int i; char temp; temp=c[a[k-1]]; for(i=0;i<k-1;i++) c[a[k-1-i]]=c[a[k-2-i]]; c[a[0]]=temp; } void turn_left(char *c,int *a,int k) { int i; char temp; temp=c[a[0]]; for(i=0;i<k-1;i++) c[a[i]]=c[a[i+1]]; c[a[k-1]]=temp; } int main() { char c[LEN]; int a[LEN]={0}; int len; int i,j,k=0; while(gets(c)) { len=strlen(c); for(i=len;i>=1;i--) { k=0; memset(a,0,sizeof(a)); for(j=i;j<=len;j+=i) a[k++]=j-1; if(k==1)continue; if(i%2==0)turn_right(c,a,k); else turn_left(c,a,k); } puts(c); } return 0; }
相关文章推荐
- ThreadLocal类为什么要加上static修饰
- hihocoder #1136 : Professor Q's Software
- [转载]TFS源代码管理
- hdu 2586 How far away ? ( 离线 LCA , tarjan )
- VS2013使用winsock.h和winsock2.h发生冲突后的终极解决方法
- 单用户模式
- 关于跨域
- jQuery插件开发的五种形态小结
- HDU 1075 翻译 (字典树||map)
- trait学习 笔记整理
- Android调用系统相机、自己定义相机、处理大图片
- 针对不同包之间的action跳转,怎么配置?
- js中css样式的操作
- ORA-01078 和 LRM-00109 报错解决方法 及oracle数据库的几个名称
- CDH使用之CM 5.3.x安装(转)
- Android学习笔记-使用Scroller来滚动视图
- 解决iOS隐藏导航栏问题
- Python: Windows下pip安装库出错:Microsoft Visual C++ 9.0 is required < Unable to find vcvarsall.bat
- 员工每天干不同的产品,得到不同的产量工资,然后月底需要按月汇总,月度汇总是从上个月26号到这个月25号为一个计算月
- 多元函数的极值及其求法