PersonalCorpus 版 (精华区)
40814 2002-10-11 17:26:15 Accepted
1009 C++ 00:00.60 396K Big Guava
char e[3][30];
char ee1[30],ee2[30],ee3[30];
int n;
char backward(char ch)
{
int i,j,k;
for (i=0;i<n;i++) if (e[2][i]==ch) break;
ch=i+65;
for (i=0;i<n;i++) if (e[1][i]==ch) break;
ch=i+65;
for (i=0;i<n;i++) if (e[0][i]==ch) break;
return i+97;
}
void turnenigma(int x)
{
int i;
char te[30];
for (i=0;i<n;i++) te[i]=(e[x][(i-1+n)%n]+1-65)%n+65;
memcpy(e[x],te,30);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("c:\\0acm\\zju\\i1009","r",stdin);
freopen("c:\\0acm\\zju\\o1009","w",stdout);
#endif
int i,j,k,m,t=0,r2,r3;
char s[10000];
while (1) {
scanf("%d\n",&n);
if (n==0) break; else t++;
if (t>1) printf("\n");
printf("Enigma %d:\n",t);
gets(ee1);
gets(ee2);
gets(ee3);
scanf("%d\n",&m);
while (m>0) {
m--;
gets(s);
strcpy(e[0],ee1);
strcpy(e[1],ee2);
strcpy(e[2],ee3);
r2=r3=0;
for (i=0;s[i]!=0;i++) {
printf("%c",backward(s[i]));
r3++; turnenigma(0);
if (r3==n) {
r3=0; r2++; turnenigma(1);
if (r2==n) {
r2=0; turnenigma(2);
}
}
}
printf("\n");
}
}
}
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.126毫秒