L先生与解密

Description

L先生最近想给暗恋的同班女神Z写一封情书,但是需要经过同学A、B、C、D、E、F、G转交,为了保证情书内容不被公之于众(否则后果,你懂的),他决定采用高大上的维吉尼亚加密。
那么,问题来了,L先生的C语言是挂科的,所以代码写不出来,笔算内容又太多,感到很无助,你能帮助他吗?

Input

多组测试例,处理到文件结束。(测试例数量<5)

每行有两个字符串,之间用空格隔开,分别为明文a和密钥b。输入字符全都为小写。(字符串长度<=50)

Output

每个加密结果占一行。输出字符全都小写。

Sample Input

datasecurity best

Sample Output

eelttiunsmlr

Hint

题意

题解:

水题 模拟 不过要知道维吉尼亚密码
L先生与解密_第1张图片 (来自百度)

AC代码

#include 
#include 
char st[26][26];
void set_jami(){
    char cc;
    for (char i = 0; i < 26; ++i){
        cc = 'a' + i;
        for (char j = 0; j < 26; ++j){
            if (cc > 'z') cc = 'a';
            st[i][j] = cc;
            cc += 1;
        }
    }
}
int main(){
    set_jami();
    char st1[55],st2[55];
    while (~scanf("%s%s",st1,st2)){
        char ans[55];
        int len1 = strlen(st1);
        int len2 = strlen(st2);
        for (int i = len2; i < len1; ++i){
            st2[i] = st2[i%len2];
        }
        for (int i = 0; i < len1; ++i){
            printf ("%c",st[st2[i]-'a'][st1[i]-'a']);
        }
        printf("\n");
    }
    return 0;
}

你可能感兴趣的:(模拟(含大数))