题意:加密、解密
题解:
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int key;
int c2i[1000];
char i2c[1000];
void init()
{
for(int i = 'a'; i <= 'z'; i++)
c2i[i] = i - 'a' + 1;
c2i['_'] = 0;
c2i['.'] = 27;
i2c[0] = '_';
i2c[27] = '.';
for(int i = 1; i <= 26; i++)
i2c[i] = 'a' + i - 1;
}
int main()
{
init();
char ciphertext[100];
int ciphercode[100];
int plaincode[100];
char plaintext[100];
while(~scanf("%d",&key))
{
if(key == 0) break;
scanf("%s",ciphertext);
int len = strlen(ciphertext);
for(int i = 0; i < len; i++)
ciphercode[i] = c2i[ciphertext[i]];
for(int i = 0; i < len; i++)
plaincode[(key*i)%len] = (ciphercode[i] + i) % 28;
for(int i = 0; i < len; i++)
plaintext[i] = i2c[plaincode[i]];
plaintext[len] = '\0';
printf("%s\n", plaintext);
}
}