HDOJ 題目1287 破譯密碼(暴力)
阿新 • • 發佈:2019-01-23
破譯密碼
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3589 Accepted Submission(s): 1632
Problem Description 有個叫“豬頭幫”的國家,採用一種簡單的文法加密,他們所用的語言裡面只有大寫字母,沒有其他任何字元;現在還知道他們加密的方法是:只用一個大寫字母和原文進行異或運算生成密文。請你幫忙解開。
Input 有若干組,每組輸入有2行,第一行整數N表示有N個密文,接著一行有N個整數分別表示N個密文。
Output 輸出僅有大寫字母組成的原文。
Sample Input 30 17 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
Author SmallBeer(CML)
Source
Recommend lcy | We have carefully selected several similar problems for you:
異或法則:
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. ac程式碼#include<stdio.h> #include<string.h> int main() { int n,a[100000]; while(scanf("%d",&n)!=EOF) { int i; char c,tc; for(i=0;i<n;i++) scanf("%d",&a[i]); for(c='A';c<='Z';c++) { for(i=0;i<n;i++) { tc=c^a[i]; if(tc<'A'||tc>'Z') break; } if(i==n) break; } for(i=0;i<n;i++) { printf("%c",c^a[i]); } printf("\n"); } }