luogu1765 手机
时空限制 1000ms/128MB
题目描述
一般的手机的键盘是这样的:
1 2 abc 3 def
4 ghi 5 jkl 6 mno
7 pqrs 8 tuv 9 wxyz
* 0 #
要按出英文字母就必须要按数字键多下。例如要按出x就得按9两下,第一下会出w,而第二下会把w变成x。0键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
输入输出格式
输入格式:
一行一个句子,只包含英文小写字母和空格,且不超过200个字符。
输出格式:
一行一个整数,表示按键盘的总次数。
输入输出样例
输入样例#1:
i have a dream
输出样例#1:
23
说明
_NOI导刊2010普及(10)
代码
#include<iostream>
#include<string>
using namespace std;
int a[128]={0};
int main(){
a['a']=a['d']=a['g']=a['j']=a['m']=a['p']=a['t']=a['w']=a[' ']=1;
a['b']=a['e']=a['h']=a['k']=a['n']=a['q']=a['u']=a['x']=2;
a['c']=a['f']=a['i']=a['l']=a['o']=a['r']=a['v']=a['y']=3;
a['s']=a['z']=4;
string s;
getline(cin,s);
int ans=0;
for (int i=0; i<s.size(); i++)
ans += a[s[i]];
cout<<ans<<endl;
return 0;
}