#include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; char ki[100+10],C[1000+10]; queue<char> M; char bts(char c) { char c1='a'+(c-'A'); return c1; } char stb(char c) { char c1='A'+(c-'a'); return c1; } void recode(char k,char mi) { char tmp,Mi; if(mi>='A'&&mi<='Z') { if (k>='a'&&k<='z') { tmp = stb(k); if ((mi-'A')-(tmp-'A')>=0) Mi=((mi-'A')-(tmp-'A')+'A'); else Mi=((mi-'A')-(tmp-'A')+26+'A'); } else { if ((mi-'A')-(k-'A')>=0) Mi=((mi-'A')-(k-'A')+'A'); else Mi=((mi-'A')-(k-'A')+26+'A'); } cout<<Mi; } if(mi>='a'&&mi<='z') { if (k>='A'&&k<='Z') { tmp = bts(k); if ((mi-'a')-(tmp-'a')>=0) Mi=((mi-'a')-(tmp-'a')+'a'); else Mi=((mi-'a')-(tmp-'a')+26+'a'); } else { if ((mi-'a')-(k-'a')>=0) Mi=((mi-'a')-(k-'a')+'a'); else Mi=((mi-'a')-(k-'a')+26+'a'); } cout<<Mi; } } int main() { scanf("%s",ki); scanf("%s",C); int kase=0; int maxn = strlen(ki); for (int i=0;i<strlen(C);i++) { if(kase>=maxn) kase = 0; recode(ki[kase],C[i]); kase ++; } cout<<endl; return 0; } |
Double click to view unformatted code.