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