杭电ACM1129——Do the Untwist~~解密 密文
2015-06-17 17:55
375 查看
如题目的意思:"_"对应的是0,"a"对应的是1,以此类推,"."对应的是27。给你k,ciphercode[i] = (plaincode[ki mod n] - i) mod 28. [b]ciphercode是密文,[b]plaincode是明文。ki为k
* i。k * i mod n为明文的第几个。n为字符串的长度[/b][/b]
给你密文,求出明文是什么。
可以用枚举来求明文。简单暴力就可以过了。
下面的是AC的代码:
* i。k * i mod n为明文的第几个。n为字符串的长度[/b][/b]
给你密文,求出明文是什么。
可以用枚举来求明文。简单暴力就可以过了。
下面的是AC的代码:
#include <iostream> #include <cstring> using namespace std; char s[28] = {'_','a','b','c','d','e','f','g','h','i','j','k','l', 'm','n','o','p','q','r','s','t','u','v','w','x','y','z','.'}; int main() { char str[80]; int k; int i, j, n, m; int p[80]; while(cin >> k) { if(k == 0) break; cin >> str; int len = strlen(str); for(i = 0; i < len; i++) { if(str[i] >= 'a' && str[i] <= 'z') n = str[i] - 96; else if(str[i] == '_') n = 0; else n = 27; m = (k * i) % len; for(j = 0; j < 28; j++) { if(((j - i) + 5 * 28) % 28 == n) { p[m] = j; break; } } } for(i = 0; i < len; i++) cout << s[p[i]]; cout << endl; } return 0; }
相关文章推荐
- 微软100题(100)智力题2
- OC基础:NSString NSNumber 分类: ios学习 OC 2015-06-17 17:55 77人阅读 评论(0) 收藏
- Leetcode 206 Reverse Linked List
- JSP页面遍历对象集合,map,数组等,Struts的s标签和c标签的区别
- Maven添加自定义的源码目录
- svn部署大中小型企业上线解决方案(四)
- 拓扑排序
- 悼念老房东
- EXT下keypress与keydown事件中的event.keyCode方法的区别
- 02-线性结构2. 一元多项式求导 (25)
- 【每日算法】C语言8大经典排序算法(2)
- 使用TestNG进行模块自动化压力测试
- [LeetCode]Median of Two Sorted Arrays
- mysql 用非主键where语句报错Error Code: 1175.You are using safe update mode and you tried …
- 用Python写单向链表和双向链表
- maven项目放入tomcat中找不到jar包
- 如何给你个表增加一个列
- ios上架准备
- UIView
- HiWork将迎来重磅改变!!