HDU2816I Love You Too(水题)

来源:互联网 发布:电信4g网络信号不好 编辑:程序博客网 时间:2024/06/13 19:02

题目大意:输入一段数字,每两个代表一个大写的英文字母,转换法则和我们手机9键盘打字规则类似,第一个代表输入的字母所在的数字按键中,第二个代表字母在该按键的第几个位置。得到的字符串再根据电脑键盘从Q到M的顺序按顺序转换(Q->A,W->B...),最后再将这段字母二分,前面一个后面一个地输出出来。

思路:就是模拟啦,电脑键盘转换那边可以建一个整型数组,下标代表电脑键盘字母的ASCII值,内容存要转化的字母的ASCII值,二分的时候注意奇偶就好啦。

代码如下:

#include<stdio.h>#include<string.h>char s1[27]={"QWERTYUIOPASDFGHJKLZXCVBNM"};char s2[10][5]={"","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"};int main(){int i,n,l,s[1000];char a[10000],k[5000];for(i=0;i<26;i++)s[s1[i]]='A'+i;while(~scanf("%s",a)){getchar();l=0;for(i=0;i<strlen(a);i+=2)k[l++]=s2[a[i]-'0'][a[i+1]-'0'-1];for(i=0;i<l;i++)k[i]=s[k[i]];n=l&1;  //判断奇偶for(i=0;i<l/2;i++){a[l-i*2-1]=k[i];a[l-i*2-2]=k[i+l/2+n];}if(n)a[l-i*2-1]=k[i];a[l]=0;puts(a);}return 0;}


原创粉丝点击