坑爹!!!从hdu比赛的ac代码交到hdu的oj不对!!!!回来才知道数组小了!!!!!!!!奇葩
题意:给你个密码,密文,让你解码。。
加密:就是给的密码,在加上所以剩余的字母的倒序,字母按加密码加密;如密码为:ANGEL,则加密如下:原B变为N,原C变为G,
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ANGELZYXWVUTSRQPOMKJIHFDCB
所以解码正好相反,把加密序列转化为解码序列就行了
ABCDEFGHIJKLMNOPQRSTUVWXYZ
AZGXLWCH......
#include<stdio.h>
#include<string.h>
char a[27],aa[27];
int b[27]={0};
char s[100002];
int main ()
{
int i,k=0;
gets(s);
for(i=0;s[i]!='\0';i++)
{
aa[k++]=s[i];
b[s[i]-'A']=1;
}
i=26;
while(i--)
{
if(b[i]==0)
aa[k++]=i+'A';
}
for(i=0;i<26;i++)
{
a[aa[i]-'A']=i+'A';
}
while(gets(s))
{
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='A'&&s[i]<='Z')
{
printf("%c",a[s[i]-'A']);
}
else if(s[i]>='a'&&s[i]<='z')
{
printf("%c",a[s[i]-'a']-'A'+'a');
}
else
printf("%c",s[i]);
}
printf("\n");
}
return 0;
}