HDU 1287 破译密码

题目地址:点击打开链接

思路:

异或运算法则

1. a ^ b = b ^ a 

2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c; 

3. d = a ^ b ^ c  可以推出 a = d ^ b ^ c. 

4. a ^ b ^ a = b.

异或还有逆运算 a^b=c,则a=b^c

AC代码:

#include<stdio.h>

int a[3000];

int main()
{
	int n,i,j;
	char c;
	while(scanf("%d",&n) != EOF)
	{
		for(i=0; i<n; i++)
		{
			scanf("%d",&a[i]);
		}
		for(i='A'; i<='Z'; i++)
		{
			for(j=0; j<n; j++)
			{
				c = a[j] ^ i;
				if(c < 'A'|| c > 'Z')
					break;
			}
			if(j == n)
				break;
		}
		for(j=0; j<n; j++)
		{
			printf("%c",a[j] ^ i);
		}
		printf("\n");
	}
	return 0;
}


你可能感兴趣的:(HDU 1287 破译密码)