九度 OJ 之 题目1538:GrassLand密码

来源:互联网 发布:盘搜搜引擎源码 编辑:程序博客网 时间:2024/05/15 23:47

题目描述:

题目来源:http://ac.jobdu.com/problem.php?pid=1538 。

由于害怕别人偷玩他的新手机,GrassLand总是为其手机加上锁屏密码。但是毫无规律的密码又不方便自己记忆,于是他有了这么一个主意:
首先GrassLand会有一个仅包含小写字母的明文密码,如horse。
然后,他按照九宫格键盘上字母的标注(下图),将字母转化为相应的数字按键。如h出现在按键4上,那么其对应的数字为4。

按照这个规则,GrassLand的明文密码被加密为46773。
现在他需要你为他编写一个程序来完成这个加密过程,生成密码。

输入:

输入包含多组测试数据,每组测试数据一行,包含一个仅包含小写字母的字符串,其长度小于10000。

输出:

对于每组测试用例,输出为一个仅包含数字的字符串,代表加密后的密码。

样例输入:
horsestrawberry
样例输出:
467737872923779
代码:
#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****************************************************************/


0 0