hdu1287 破译密码
来源:互联网 发布:康佳电视机软件下载 编辑:程序博客网 时间:2024/06/15 08:00
题意:
破译密码
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3227 Accepted Submission(s): 1452
Problem Description
有个叫“猪头帮”的国家,采用一种简单的文法加密,他们所用的语言里面只有大写字母,没有其他任何字符;现在还知道他们加密的方法是:只用一个大写字母和原文进行异或运算生成密文。请你帮忙解开。
Input
有若干组,每组输入有2行,第一行整数N表示有N个密文,接着一行有N个整数分别表示N个密文。
Output
输出仅有大写字母组成的原文。
Sample Input
3017 6 9 8 3 0 1 6 7 4 5 10 11 8 9 14 15 12 13 18 19 16 17 22 23 20 21 26 27 24
Sample Output
SDKJABCDEFGHIJKLMNOPQRSTUVWXYZ
思路:
首先明确一点就是,既然是密码传输,估计是只能传输加密的东西,不能传输真实的东西,所以该题目的测试数据应该给的是只有一种破译方式的数据,(这个是我自己猜的,不然没办法做,他也没写特判),对于异或 有这样的规律 a^b^b = a;所以直接暴力枚举他的加密异或字母,当所有的都是大写字母的时候就ok了...没说n多大,我开的是10W
首先明确一点就是,既然是密码传输,估计是只能传输加密的东西,不能传输真实的东西,所以该题目的测试数据应该给的是只有一种破译方式的数据,(这个是我自己猜的,不然没办法做,他也没写特判),对于异或 有这样的规律 a^b^b = a;所以直接暴力枚举他的加密异或字母,当所有的都是大写字母的时候就ok了...没说n多大,我开的是10W
#include<stdio.h>int num[100000];int ans[100000];int main (){ int n ,i ,j; while(~scanf("%d" ,&n)) { for(i = 1 ;i <= n ;i ++) { scanf("%d" ,&num[i]); } for(i = 1 ;i <= 26 ;i ++) { for(j = 1 ;j <= n ;j ++) { ans[j] = num[j] ^ i; if(ans[j]<=0 || ans[j] > 26) break; } if(j == n + 1) break; } for(i = 1 ;i <= n ;i ++) printf("%c" ,ans[i] + 64); printf("\n"); } return 0;}
0 0
- HDU1287 破译密码
- hdu1287 破译密码
- HDU1287 破译密码
- HDU1287 破译密码
- 【异或】HDU1287破译密码
- 思维体操: HDU1287破译密码
- hdu1287破译密码(异或运算)
- 破译密码
- 破译密码
- 破译密码
- 破译密码
- POJ3749 破译密码【密码】
- POJ 3749 破译密码
- pku 3749 破译密码
- PKU--3749 破译密码
- HDOJ 1287 破译密码
- 本地QQ密码破译
- 破译电脑密码方法
- 全屏动态磁贴
- java.lang.NoClassDefFoundError: com/opensymphony/xwork2/config/FileManagerProvider
- 学习C++:实践者的方法
- 一步步学习微软InfoPath2010和SP2010--第五章节--添加逻辑和规则到表单(5)--处理节和条件格式
- CSS居中对齐
- hdu1287 破译密码
- android中ListView多次刷新重复执行getView的解决方法
- 看似山重水复,其实有可能柳暗花明(跳出程序猿思维之外)
- linux shell 字符串操作(长度,查找,替换)详解
- myeclipse10破解以及找不到common文件夹解决方法
- 工业CCD相机芯片靶面尺寸的计算
- C++中的封装、继承、多态
- IOS学习经验总结
- Cortex-M3 (NXP LPC1788)之IIC应用--PCA9532进行IO扩展和LED亮度控制