您的位置:首页 > 其它

ZOJ 1009 Enigma

2014-04-15 14:22 387 查看
想法很清楚,但代码不容易实现

保存先

#include<stdio.h>
#include<string.h>
int m,n,i,j,k,t,iCase;
char enigma[3][26];
char input[1000];
int iChange[3],len;
int main()
{
scanf("%d",&m);
iCase=1;
while(m!=0)
{
for(i=0;i<3;i++)
{
scanf("%s",input);
len=strlen(input);
for(j=0;j<len;j++)
{
enigma[i][input[j]-'A']=j+'A'-input[j];
}
}
scanf("%d",&n);
if(iCase!=1)
{
printf("\n");
}
printf("Enigma %d:\n",iCase);
iCase++;
for(i=0;i<n;i++)
{
scanf("%s",input);
len=strlen(input);
for(j=0;j<len;j++)
{
iChange[0]=j%m;
iChange[1]=(j/m)%m;
iChange[2]=(j/(m*m))%m;
t=input[j]-'A';
for(k=2;k>=0;k--)
{
t+=enigma[k][(t+m-iChange[k])%m];
t=(t+m)%m;
}
printf("%c",t+'a');
}
printf("\n");
}

scanf("%d",&m);
}

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: