杭电ACM1287——破译密码

时间:2022-09-09 15:32:41

这题,简单的异或运算。

a ^ b = c  => a ^ b ^ a = c ^ a = b。

而这个b就是我们要求解的。

下面的是AC的代码:

#include <iostream>
#include <cstring>
using namespace std;

int a[10010];
char b[10010];

int main()
{
int n;
int i, j, k;
while(cin >> n)
{
for(i = 0; i < n; i++)
cin >> a[i];
memset(b, '\0', sizeof(b));
for(j = 'A'; j <= 'Z'; j++) //密码的规律如此,从A到Z之后,在来一次轮回
{
for(k = 0; k < n; k++)
{
b[k] = j ^ a[k];
if(b[k] < 'A' || b[k] > 'Z')
break;
}
if(k == n)
break;
}
cout << b << endl;
}
return 0;
}