题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4690
解题思路:
题目大意:
给出两个字符表,要求你对输入的字符信息转换成第二个表的字符信息。输入包含一对对十六进制的数(X,Y),表示该字符在第一个字符表的第X行第Y列上,
然后要你输出该字符在第二个字符表的坐标(X2,Y2)。
输入:一行由大写16进制数字组成的字符串(每两个数表示一个字符在表一中的坐标)。
输出:对面的字符表二的坐标。
AC代码:
#include <iostream>
#include <cstdio>
using namespace std;
string A[16][16] = {"NUL","SOH","STX","ETX","","HT","","DEL","","","","VT","FF","CR","SO","SI",
"DLE","DC1","DC2","DC3","","","BS","","CAN","EM","","","IFS","IGS","IRS","IUS ITB",
"","","","","","LF","ETB","ESC","","","","","","ENQ","ACK","BEL",
"","","SYN","","","","","EOT","","","","","DC4","NAK","","SUB",
"SP","","","","","","","","","","",".","<","(","+","|",
"&","","","","","","","","","","!","$","*",")",";","",
"-","/","","","","","","","","","",",","%","_",">","?",
"","","","","","","","","","`",":","#","@","'","=","""",
"","a","b","c","d","e","f","g","h","i","","","","","","",
"","j","k","l","m","n","o","p","q","r","","","","","","",
"","~","s","t","u","v","w","x","y","z","","","","","","",
"^","","","","","","","","","","[","]","","","","",
"{","A","B","C","D","E","F","G","H","I","","","","","","",
"}","J","K","L","M","N","O","P","Q","R","","","","","","",
"\\","","S","T","U","V","W","X","Y","Z","","","","","","",
"0","1","2","3","4","5","6","7","8","9","","","","","",""};
string B[8][16] = {"NUL","SOH","STX","ETX","EOT","ENQ","ACK","BEL","BS","HT","LF","VT","FF","CR","SO","SI",
"DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB","CAN","EM","SUB","ESC","IFS","IGS","IRS","IUS ITB",
"SP","!","""","#","$","%","&","'","(",")","*","+",",","-",".","/",
"0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?",
"@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O",
"P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_",
"`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o",
"p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","DEL"};
int main(){
char a,b;
while(1)
{
a = getchar();
if(a == '\n')
break;
b = getchar();
int aa,bb;
if(a >= 'A' && a <= 'F')
aa = a-'A'+10;
if(a >= '0' && a <= '9')
aa = a-'0';
if(b >= 'A' && b <= 'F')
bb = b-'A'+10;
if(b >= '0' && b <= '9')
bb = b-'0';
for(int i = 0; i < 8; i++)
{
for(int j = 0; j < 16; j++)
if(B[i][j] == A[aa][bb])
{
a = i+'0';
if(j >=0 && j <= 9)
b = j+'0';
else
b = j-10+'A';
break;
}
}
printf("%c%c",a,b);
}
printf("\n");
return 0;
}