#include "iostream"
#include "map"
#include "string"
#include "memory.h"
using namespace std;
int main()
{
int num, i, len;
string str, ans;
int ciphercode[80], plaincode[80];
memset(ciphercode, 0, sizeof(ciphercode));
memset(plaincode, 0, sizeof(plaincode));
map<char, int> m1;
map<int, char> m2;
m1['_'] = 0, m1['.'] = 27;
m2[0] = '_', m2[27] = '.';
for (i = 0; i < 26; i++)
m1['a'+i] = i + 1;
for (i = 0; i < 26; i++)
m2[i+1] = 'a' + i;
while (cin >> num && num)
{
cin >> str;
ans = "";
len = str.length();
for (i = 0; i < len; i++)
{
ciphercode[i] = m1[str[i]];
plaincode[(num * i) % len] = (i+ciphercode[i])%28;//主要是这条公式!
}
for (i = 0; i < len; i++)
{
ans += m2[plaincode[i]];
}
cout << ans << endl;
}
}
zoj 1006 Do the Untwist
最新推荐文章于 2021-02-16 20:18:46 发布