讨论 / 新人发题解
yangrui6359447 2013-11-04 03:36:16
点我顶贴 收藏 删除
#include<iostream>

#include<string>

#include<cstring>

#include<cctype>

using namespace std;

bool da[1005]={0};

char key[127][127];

string ans;

void trans(string k,string m)

{

for (char i='a';i<='z';i++)

key['a'][i]=key[i]['a']=i;

for (char i='b';i<='z';i++)

for (char j='b';j<='z';j++)

{

key[i][j]=key[i][j-1]+1;

if (key[i][j]>'z')

key[i][j]-=26;

}

int lenk=k.size();

int lenm=m.size();

for (int i=0;i<lenm;i++)

{

if (m[i]>='A'&&m[i]<='Z')

da[i]=true;

}

for (int i=0;i<lenm;i++)

{

m[i]=tolower(m[i]);

}

for (int i=0;i<lenk;i++)

{

k[i]=tolower(k[i]);

}

if(lenk<=lenm)

{

int lenk2=k.size();

while (lenk2<lenm)

{

k.append(k);

lenk2=k.size();

}

}

for (int i=0;i<lenm;i++)

{

for (char j='a';j<='z';j++)

{

if (key[j][k[i]]==m[i])

ans[i]=j;

}

if (da[i])

ans[i]=toupper(ans[i]);

cout<<ans[i];

}

}

int main()

{

string k,m,ans;

cin>>k>>m;

trans(k,m);

// system("pause");

return 0;

}

#1 OIerHome@2013-11-04 03:39:13
回复 删除
good!
查看更多回复
提交回复