简单模拟
View Code
#include#include #include #include using namespace std;#define maxl 75int key;char cipher_text[maxl];char plain_text[maxl];bool is_letter(char ch){ return ch <= 'z' && ch >= 'a';}int get_code(char ch){ if (is_letter(ch)) return ch - 'a' + 1; if (ch == '_') return 0; if (ch == '.') return 27; return -1;}char get_text(int a){ if (a <= 26 && a >= 1) return a + 'a' - 1; if (a == 0) return '_'; if (a == 27) return '.'; return -1;}int unify(int a, int w){ return (a % w + w) % w;}int main(){ //freopen("t.txt", "r", stdin); while (scanf("%d", &key), key) { scanf("%s", cipher_text); int len = strlen(cipher_text); for (int i = 0; i < len; i++) plain_text[unify(key * i, len)] = get_text(unify(get_code(cipher_text[i]) + i, 28)); plain_text[len] = 0; puts(plain_text); } return 0;}