上链接:杭电1087
题目大意:
加密的方法是:只用一个大写字母和原文进行异或运算生成密文。输入密文输出原文
思路:
a^b=c;a^c=b;b^c=a
通过这个思路可以得出用于加密的大写字母
贴代码:
#include <cstdio>
using namespace std;
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
int a[5001];
char b[5001] = {0};
for(int i=0; i<n; ++i)
scanf("%d", &a[i]);
for(int i='A'; i<='Z'; ++i)
{
int j;
for(j=0; j<n; ++j)
{
b[j] = i^a[j];
if(b[j] < 'A' || b[j] > 'Z')
break;
}
if(j == n) break;
}
printf("%s\n", b);
}
return 0;
}
注意事项:
在循环内对数组清0,否则一开始是30后来是10就会出现错误