POJ 1107 W's Cipher (模拟解密)
来源:互联网 发布:网络教育大专,自考本科 编辑:程序博客网 时间:2024/05/21 14:44
这是一道简单的模拟题,不过看题的时间长了点,没办法,英语不太好。
题意:
先是将字母和下划线分为三类a~i,j~r,s~z和‘_’; 然后,独立地交换每组的字母,例如:对于 “_icuo_bfnwhoq_kxert”,
第一组符号有{i,c,b,f,h,e},位置分别为{2,3,7,8,11,17},假设k1=2;那么第一组符号顺序变为{h,e,i,c,b,f},不过在原字符串中占
有的位置还是{2,3,7,8,11,17},然后第二组······第三组······
参考代码:
#include<stdio.h>#include<string.h>int main(){ short k1,k2,k3,a[81],b[81],i,l,n,t; char ch[81],cha[81]; scanf("%d%d%d",&k1,&k2,&k3); while(k1||k2||k3) { scanf("%s",ch); l=strlen(ch); n=0; for (i=0;i<l;i++) if (ch[i]>='a'&&ch[i]<='i') { a[n]=i; n++; } for (i=0;i<n;i++) { t=(i+k1)%n; b[t]=a[i]; } for (i=0;i<n;i++) cha[a[i]]=ch[b[i]]; n=0; for (i=0;i<l;i++) if (ch[i]>='j'&&ch[i]<='r') { a[n]=i; n++; } for (i=0;i<n;i++) { t=(i+k2)%n; b[t]=a[i]; } for (i=0;i<n;i++) cha[a[i]]=ch[b[i]]; //for (i=0;i<n;i++) printf("%d ",a[i]);printf("\n"); // for (i=0;i<n;i++) printf("%d ",b[i]);printf("\n"); n=0; for (i=0;i<l;i++) if ((ch[i]>='s'&&ch[i]<='z')||ch[i]=='_') { a[n]=i; n++; } for (i=0;i<n;i++) { t=(i+k3)%n; b[t]=a[i]; } for (i=0;i<n;i++) cha[a[i]]=ch[b[i]]; for (i=0;i<l;i++) printf("%c",cha[i]); printf("\n"); scanf("%d%d%d",&k1,&k2,&k3); } return 0;}
0 0
- POJ 1107 W's Cipher (模拟解密)
- POJ 1107 W's Cipher(模拟)
- POJ 1107 W's Cipher 解密
- 文章标题poj 1107:W's Cipher (模拟)
- poj 1107 --W's Cipher
- poj 1107W's Cipher
- POJ 1107 W's Cipher
- POJ 1107 W's Cipher
- POJ 1107 : W\'s Cipher - 密码,字符串模拟
- poj 1107 (jobdu 1485) W's Cipher AC代码
- POJ - 1107 W's Cipher
- Poj.1107 W's Cipher【水题】 2015/04/22
- POJ 1107 W's Cipher 已被翻译
- POJ1107 W's Cipher 简单模拟
- poj1107 W's Cipher(字符串)
- 1042 W's Cipher
- POJ1107 W's Cipher
- ZOJ1042-W`s Cipher
- Android 获取Root权限之后的静默安装实现 代码示例分析
- android:duplicateParentState属性解释
- 数据结构之图(存储结构、遍历)
- java反射---获取类的构造方法
- Android前台画面和后台service之间通信的方法之Broadcast
- POJ 1107 W's Cipher (模拟解密)
- hdu-1406-完数习题解
- jquery validate 的remote用法
- [水]关于web地图
- Linux0.11 由进程睡眠函数sleep_on()中的堆栈变量tmp引发的思考 关于进程内核堆栈
- spark学习三 RDD详解
- SVN服务器搭建和使用(二)
- 你见或者不见 ---出自 《班扎古鲁白玛的沉默》 作者--扎西拉姆多多
- 设置SetPadding无效。