密码
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 18 Accepted Submission(s) : 6
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
现在,密码在各行各业上的应用已经非常普遍了。
密码是按特定法则编成,用以对通信双方的信息进行明密变换的符号。换而言之,密码是隐蔽了真实内容的符号序列。就是把用公开的、标准的信息编码表示的信息通过一种变换手段,将其变为除通信双方以外其他人所不能读懂的信息编码,这种独特的信息编码就是密码。
现在给你多行字符串和明密的变换方法,请你将密码翻译成明文。每行字符串由'*'和空格组成,每两个'*'之间由一个或多个空格隔开,当空格的个数为奇数时表示1,偶数时表示0。
比如“ *0*00*00*00*0*00*0* ”(这里用'0'来代替空格),这段字符串中每两个'*'之间的空格的个数分别为:1,2,2,2,1,2,1。所以他转换后得到的数字为1000101,这个数是二进制数,将它转化为十进制数为69。按ASCII码表中69对应的字符为'E'。所以我们根据这段字符串可以得到字符'E'。
每一行字符串都对应着一个字符,请将给出的多行字符串转化成字符输出(保证所得的ASCII码值在32~126的范围内)
密码是按特定法则编成,用以对通信双方的信息进行明密变换的符号。换而言之,密码是隐蔽了真实内容的符号序列。就是把用公开的、标准的信息编码表示的信息通过一种变换手段,将其变为除通信双方以外其他人所不能读懂的信息编码,这种独特的信息编码就是密码。
现在给你多行字符串和明密的变换方法,请你将密码翻译成明文。每行字符串由'*'和空格组成,每两个'*'之间由一个或多个空格隔开,当空格的个数为奇数时表示1,偶数时表示0。
比如“ *0*00*00*00*0*00*0* ”(这里用'0'来代替空格),这段字符串中每两个'*'之间的空格的个数分别为:1,2,2,2,1,2,1。所以他转换后得到的数字为1000101,这个数是二进制数,将它转化为十进制数为69。按ASCII码表中69对应的字符为'E'。所以我们根据这段字符串可以得到字符'E'。
每一行字符串都对应着一个字符,请将给出的多行字符串转化成字符输出(保证所得的ASCII码值在32~126的范围内)
Input
输入有多组数据,每组先给出一个整数n(n<=30)。然后紧接着n行字符串(字符串长度不超过100)。
Output
输出一行得到的明文。
Sample Input
9 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Sample Output
ECJTU_ACM I LOVE ACM
#include <cstdio> #include <cstring> #define Max 100 char str[Max]; int lav[Max]; int cav[Max]; int main(int argc, char const *argv[]) { int n; while (~scanf("%d\n", &n)) { memset(cav, 0, sizeof(cav)); int k = 0; while (n--) { memset(str, '\0', sizeof(str)); memset(lav, 0, sizeof(lav)); gets(str); int key = 0; int sum = 0; int j = 0; for (int i = 0; i < strlen(str); i++) { if (str[i] == ' ') { sum ++; key = 1; } else if (key && str[i] != ' ') { if (sum % 2 == 0) lav[j++] = 0; else lav[j++] = 1; sum = 0; key = 0; } } for (int i = 0; i < j - 1; i++) { lav[i+1] += lav[i] * 2; } cav[k++] = lav[j-1]; } for (int i = 0; i < k; i++) printf("%c", cav[i]); printf("\n"); } return 0; }