HDU2816I Love You Too(水题)

题目大意:输入一段数字,每两个代表一个大写的英文字母,转换法则和我们手机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;
}


全部评论

相关推荐

醉蟀:你不干有的是人干
点赞 评论 收藏
分享
06-18 15:03
门头沟学院 Java
至少实习看起来比去年好?问了下群里的同学和身边的同学,人均有offer。有的还有好几个大厂offer
菜鸟1973:上一年暑期也是人均大厂实习offer,结果秋招跟不招人一样,大部分都转正了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务