洛谷P1765 手机
一般的手机的键盘是这样的:要按出英文字母就必须要按数字键多下。例如要按出x就得按9两下,第一下会出w,而第二下会把w变成x。0键按一下会出一个空格。你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
·
P1765 手机
题目描述
一般的手机的键盘是这样的:

要按出英文字母就必须要按数字键多下。例如要按出 x\tt xx 就得按 999 两下,第一下会出 w\tt ww,而第二下会把 w\tt ww 变成 x\tt xx。000 键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
输入格式
一行句子,只包含英文小写字母和空格,且不超过 200 个字符。
输出格式
一行一个整数,表示按键盘的总次数。
输入输出样例 #1
输入 #1
i have a dream
输出 #1
23
说明/提示
NOI 导刊 2010 普及(10)
//1765
#include<cstring>
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
using namespace std;
string oriText;
int a[200];
int ans;
int main()
{
a['a']=1; a['b']=2; a['c']=3;
a['d']=1; a['e']=2; a['f']=3;
a['g']=1; a['h']=2; a['i']=3;
a['j']=1; a['k']=2; a['l']=3;
a['m']=1; a['n']=2; a['o']=3;
a['p']=1; a['q']=2; a['r']=3; a['s']=4;
a['t']=1; a['u']=2; a['v']=3; a[' ']=1;
a['w']=1; a['x']=2; a['y']=3; a['z']=4;
getline(cin,oriText);
for(int i=0;i<oriText.size();++i)
ans+=a[oriText[i]];
printf("%d\n",ans);
return 0;
}
更多推荐



所有评论(0)