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毫秒