hdu-1287- 破译密码

来源:互联网 发布:阿里云与运营商云区别 编辑:程序博客网 时间:2024/05/14 02:02

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,加密后为c,

现在已知的是c,并且c=a^b,

那么a=c^b,

因为密文只可能是大写字母,所以就一个一个试试看,如果得出的a也都是大写字母的话,就说明这个字母就是密钥(题目中没有多个都符合的情况)


下面代码~~


import java.io.*;import java.util.*;public class Main{public static void main(String[] args){Scanner cin=new Scanner(new BufferedInputStream(System.in));int[] code;int num;while(cin.hasNext()){num=cin.nextInt();code=new int[num+2];for(int i=1;i<=num;++i){code[i]=cin.nextInt();}boolean isthis;char key;for(key='A';key<='Z';++key){isthis=true;for(int i=1;i<=num;++i){int tem=(int)key^code[i];if((char)tem<'A'||(char)tem>'Z'){isthis=false;break;}}if(isthis)break;}for(int i=1;i<=num;++i){int sol=(int)key^code[i];System.out.print((char)sol);}System.out.println();}}}





原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 蚂蚁花呗无法开通怎么办 花呗本月还不了怎么办 蚂蚁借呗没钱还怎么办 淘宝账号被限制登录怎么办 辱骂买家被投诉骚扰怎么办 淘宝卖家骚扰买家怎么办 被淘宝卖家电话骚扰怎么办 闲鱼卖东西买家退货运费怎么办 淘宝被恶意拍单怎么办 炒作信用度评价被删除怎么办 删除淘宝评价之后卖家不返现怎么办 美团客户给差评怎么办 淘宝卖家评价差怎么办 淘宝卖家发货未揽收怎么办 周不过5我超过了怎么办 淘宝申请退款后卖家不确认怎么办 淘宝直通车b类扣12分怎么办 淘宝店铺被买家投诉怎么办 淘宝店铺遭买家投诉怎么办 淘宝店铺被买家恶意投诉怎么办 苹果手机无法识别指纹怎么办 淘宝店铺虚假交易违规怎么办 斗鱼直播太卡怎么办 神笔添加视频尺码不符合怎么办 闲鱼卖家单号填错了怎么办 户户通没有信号强度怎么办 全民k歌qq登不上怎么办 手机直播没电了怎么办 淘宝退货卖家拒收怎么办 充的会员卡店家关门了怎么办 淘宝手机号码被注册了怎么办 淘宝不支持七天无理由退货怎么办 微信视频横屏怎么办 房子里潮气太重怎么办 淘宝不小心注销了怎么办 淘宝号不小心注销了怎么办 xp网络驱动没了怎么办 淘宝卖家客服态度差怎么办 怀孕吃辣椒喉咙好痛怎么办 淘宝店铺建议不要提交认证怎么办 淘宝买东西商家不退款怎么办