NOIP2012复赛day1 Vigenère密码 简单的一题

来源:互联网 发布:朱峰 知乎 编辑:程序博客网 时间:2024/05/18 07:59

noip2012年复赛题,字符串的处理,随便做一做

直接贴代码,不说其他的~

#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;}


0 0
原创粉丝点击