九宫格输入法适合在手机上使用,它在屏幕上的布局如下
1 2 abc 3 def
4 ghi 5 jkl 6 mno
7 pqrs 8 tuv 9 wxyz 0
如果要打出一个 x,就需要按两下 9。第一次按 9 号键会出现 w,按第二次才会将 w 改成 x。注意 0 号键的作用是打出一个空格。
给定一些仅有小写字母和空格组成的字符序列,请计算用九宫格输入法总计需要按多少次键。
输入格式 单个字符序列:表示打印的内容,保证只由小写字母及空格组成,且两个单词之间有且只有一个空格。
输出格式 单个整数:表示按键的总次数。
由于本人太弱了,只能打表了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;
long long si,san,er,yi,kong;
string s;
int main()
{
getline(cin,s);
for(int i=0;i<s.length() ;i++)
{
if(s[i]==' ')
{
kong++;
}
}
for(int i=0;i<s.length() ;i++)
{
if(s[i]=='a')
{
yi++;
}
else if(s[i]=='d')
{
yi++;
}
else if(s[i]=='g')
{
yi++;
}
else if(s[i]=='j')
{
yi++;
}
else if(s[i]=='m')
{
yi++;
}
else if(s[i]=='p')
{
yi++;
}
else if(s[i]=='t')
{
yi++;
}
else if(s[i]=='w')
{
yi++;
}
}
for(int i=0;i<s.length() ;i++)
{
if(s[i]=='b')
{
er+=2;
}
else if(s[i]=='e')
{
er+=2;
}
else if(s[i]=='h')
{
er+=2;
}
else if(s[i]=='k')
{
er+=2;
}
else if(s[i]=='n')
{
er+=2;
}
else if(s[i]=='q')
{
er+=2;
}
else if(s[i]=='u')
{
er+=2;
}
else if(s[i]=='x')
{
er+=2;
}
}
for(int i=0;i<s.length() ;i++)
{
if(s[i]=='c')
{
san+=3;
}
else if(s[i]=='f')
{
san+=3;
}
else if(s[i]=='i')
{
san+=3;
}
else if(s[i]=='l')
{
san+=3;
}
else if(s[i]=='o')
{
san+=3;
}
else if(s[i]=='s')
{
san+=3;
}
else if(s[i]=='v')
{
san+=3;
}
else if(s[i]=='z')
{
san+=3;
}
}
for(int i=0;i<s.length() ;i++)
{
if(s[i]=='s')
{
si+=4;
}
else if(s[i]=='z')
{
si+=4;
}
}
cout<<si+er+san+yi;
}