Day1

T1vigenere密码

题目链接

vijos截得不全导致题意可能会理解错,注意小写字母应该是先转大写进行变换,再根据情况看是否需要再转成小写。

然后,然后就没了啊。

 1 #include<cstdio>
 2 #include<cstring>
 3 char ch[105],tt[1005],an[1005];
 4 int len,le,mi[105];
 5 int main(){
 6     scanf("%s %s",ch+1,tt+1);
 7     len=strlen(ch+1);le=strlen(tt+1);
 8     for(int i=1;i<=len;i++){
 9         if(ch[i]>='a')ch[i]=ch[i]-('a'-'A');
10         mi[i]=ch[i]-130;
11     }
12     int h=1;
13     for(int i=1;i<=le;i++,h++){
14         if(h>len)h=1;
15         int p=tt[i]>='a'?tt[i]-('a'-'A'):tt[i];
16         p-=65;
17         for(int x='A';x<='Z';x++)if((x+mi[h])%26==p){an[i]=x;break;}
18         if(tt[i]>='a')an[i]+='a'-'A';
19     }
20     for(int i=1;i<=le;i++)printf("%c",an[i]);
21     return 0;
22 }
D1 T1

相关文章: