HDU1048 The Hardest Problem Ever
方法一:对照输入输出字符,不难看出两者相差距离d='N'-'I',注意越界处理,若输出字符 <'A'时,对其+26就OK了。
方法二:由题意result[27]="VWXYZABCDEFGHIJKLMNOPQRSTU",将输入与输出相对应即可,对应公式:result[str[i]-'A']即为所求。
【code 1】
#include<stdio.h>
#include<string.h>
int main()
{
char str[1001];
int len ,i,d='N'-'I';
while(1)
{
gets(str);
if(!strcmp("ENDOFINPUT",str))
break;
if (strcmp("START",str) && strcmp("END",str))
{
len=strlen(str);
for(i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z')
{
str[i]-=d;
if(str[i]<'A')
str[i]+=26;
}
}
puts(str);
}
}
return 0;
}
【code 2】
#include<stdio.h>
#include<string.h>
int main()
{
char str[1001],result[27]="VWXYZABCDEFGHIJKLMNOPQRSTU";
int len,i;
while(1)
{
gets(str);
if(!strcmp("ENDOFINPUT",str))
break;
if(strcmp("START",str)&&strcmp("END",str))
{
len=strlen(str);
for(i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z')
printf("%c",result[str[i]-'A']);
else
printf("%c",str[i]);
}
printf("/n");
}
}
return 0;
}