代码如下:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int key;
string tmp;
void findkey(string tmp){
int buc[30];
memset(buc,0,sizeof(buc));
for(int i=0;i<tmp.size();i++){
if(tmp[i]>='a'&&tmp[i]<='z')tmp[i]-=('a'-'A');
}
for(int i=0;i<tmp.size();i++){
if(tmp[i]<'A'||tmp[i]>'Z')continue;
buc[tmp[i]-'A']++;
}
key=0;
for(int i=0;i<26;i++){
if(buc[i]>buc[key])key=i;
}
key=4-key;
}
void change(string &tmp){
for(int i=0;i<tmp.size();i++){
if(tmp[i]>='a'&&tmp[i]<='z')tmp[i]-=('a'-'A');
}
for(int i=0;i<tmp.size();i++){
if(tmp[i]<'A'||tmp[i]>'Z')continue;
tmp[i]+=key;
if(tmp[i]<65)tmp[i]=90-65+tmp[i]+1;
if(tmp[i]>90)tmp[i]=65+tmp[i]-90+1;
}
}
int main(){
int n=1;
int r=1;
while(1){
getline(cin,tmp);
if(tmp=="ENDOFINPUT")break;
if(r==1)r++;
else if(r==3)r=1;
else{
if(n==1)findkey(tmp);
change(tmp);
cout<<tmp<<endl;
n++;
r++;
}
}
return 0;
}
请求开放数据下载