信息战(二)——破解密码
Time Limit: 1000ms
Memory Limit: 65536KB
64-bit integer IO format:
%lld Java class name:
Main
在A国发明出了一种加密方法以后,A国的敌方C国的情报人员非常头疼,因为如此他们就没法获得他们所需要的情报了,战场上的优势转眼之
间就消失了,双方进入了胶着状态。为了打破这种局面,C国情报部门决定让HT解决这个问题。HT派出了间谍对A国情报传递过程进行窃听,
得到了一个数字(上题目中提到的,X或Y)以及一个在明文中出现过的单词(全大写)。现在HT聘请你根据这两个信息写出一个破译程序,
要求按照明文顺序输出。由于情报部门的优秀工作,HT能确定在他给出对应信息后只会有一组解。
间就消失了,双方进入了胶着状态。为了打破这种局面,C国情报部门决定让HT解决这个问题。HT派出了间谍对A国情报传递过程进行窃听,
得到了一个数字(上题目中提到的,X或Y)以及一个在明文中出现过的单词(全大写)。现在HT聘请你根据这两个信息写出一个破译程序,
要求按照明文顺序输出。由于情报部门的优秀工作,HT能确定在他给出对应信息后只会有一组解。
Input
第一行至文件末尾,每一行:一个数字N(0 < N <= 200),一个单词(长度L <= 10)一个密文(密文长度小于等于40000)。
Output
处理后的明文。
Sample Input
3 PROBLEM PBMRLAOEB
3 TEST TTCEADSBE
3 LIST LTCIADSBE
3 UNIVERSAL UVSNEAIRL
6 EXAMPLE TAOMCHVNPDIEGLESREEFIYXAGSLABH
3 TEST TTCEADSBE
3 LIST LTCIADSBE
3 UNIVERSAL UVSNEAIRL
6 EXAMPLE TAOMCHVNPDIEGLESREEFIYXAGSLABH
Sample Output
PROBLEMAB
TESTABCDE
LISTABCDEUNIVERSAL
THISISAVERYLONGEXAMPLEABCDEFGH
TESTABCDE
LISTABCDEUNIVERSAL
THISISAVERYLONGEXAMPLEABCDEFGH
Source
第七届北京师范大学程序设计竞赛热身赛第二场
Author
51isoft
Tags ( Click to see )
1 #include<iostream> 2 #include<algorithm> 3 #include<queue> 4 #include<cstdio> 5 #include<cstdlib> 6 #include<cstring> 7 #include<cmath> 8 #include<ctype.h> 9 using namespace std; 10 #define sr(x) scanf("%d",&x) 11 #define sc(x) printf("%d",x) 12 #define hh printf("\n") 13 char a[40001],b[40001],d[20]; 14 bool zh(int x,int y) 15 { 16 int i,j,k=0; 17 for(i=0;i<y;i++) 18 { 19 for(j=0;j<x;j++)b[i+j*y]=a[k++]; 20 } 21 b[x*y]='\0'; 22 23 24 return strstr(b,d); 25 } 26 27 28 int main() 29 { 30 int n; 31 while(scanf("%d%s%s",&n,&d,&a)!=EOF) 32 { 33 int l; 34 l=strlen(a); 35 if(zh(n,l/n)); 36 else zh(l/n,n); 37 printf("%s\n",b); 38 } 39 return 0; 40 }