-
由于害怕别人偷玩他的新手机,GrassLand总是为其手机加上锁屏密码。但是毫无规律的密码又不方便自己记忆,于是他有了这么一个主意:
首先GrassLand会有一个仅包含小写字母的明文密码,如horse。
然后,他按照九宫格键盘上字母的标注(下图),将字母转化为相应的数字按键。如h出现在按键4上,那么其对应的数字为4。按照这个规则,GrassLand的明文密码被加密为46773。
现在他需要你为他编写一个程序来完成这个加密过程,生成密码。
题目描述:
-
输入:
-
输入包含多组测试数据,每组测试数据一行,包含一个仅包含小写字母的字符串,其长度小于10000。
-
输出:
-
对于每组测试用例,输出为一个仅包含数字的字符串,代表加密后的密码。
-
样例输入:
-
horse strawberry
-
样例输出:
-
46773 7872923779
-
代码:
-
#include <iostream> #include <string> using namespace std; char map(char c) { switch(c) { case 'a': case 'b': case 'c': return '2'; case 'd': case 'e': case 'f': return '3'; case 'g': case 'h': case 'i': return '4'; case 'j': case 'k': case 'l': return '5'; case 'm': case 'n': case 'o': return '6'; case 'p': case 'q': case 'r': case 's': return '7'; case 't': case 'u': case 'v': return '8'; case 'w': case 'x': case 'y': case 'z': return '9'; default: return '0'; } } int main() { string s[100]; int i = 0; while(cin) { getline(cin,s[i]); i++; } for(int j = 0 ; j < i ; j++) { int len = s[j].size(); for(int k = 0 ; k < len ; k++) { s[j][k] = map(s[j][k]); } } for(int m = 0 ; m < i ; m++) cout<<s[m]<<endl; return 0; } /************************************************************** Problem: 1538 User: MisterChen Language: C++ Result: Accepted Time:50 ms Memory:1520 kb ****************************************************************/