您的位置:首页 > 其它

杭电 1287 破译密码

2012-09-05 15:36 253 查看
^按位异或的意思。就是“不同为1,相同为0”
1^1=0 0^1=1 0^0=0
举个例子:3^5=?
3=(0011)B 5=(0101)B
0011
^ 0101
————
0110
0110的十进制数是6
所以3^5=6

这题其实是说存在一个大写字母x,然后让原文(都是大写字母)和x做xor后得到密文。现在给密文求原文。

因为x不知道,所以枚举x。判断方法是判断是否解密出来的原文都在'A'-'Z'范围内。

起初做的时候不明白那个异或怎么弄的。只要知道^符号就能做了。

代码:

View Code

#include<iostream>
using namespace std;
int main()
{
int n,i,j;
char y;
int scr[10000];
while(cin>>n)
{
for(i=0;i<n;i++)
cin>>scr[i];
for(i=65;i<=90;i++)
{
for(j=0;j<n;j++)
if((scr[j]^i)<65||(scr[j]^i)>90)
break;
if(j>=n)
break;
}
for(j=0;j<n;j++)
{
putwchar(scr[j]^i);
}
cout<<endl;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: