本文主要是介绍ZOJ 1006 Do the Untwist 加密解密 模拟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:加密、解密
题解:
#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);}
}
这篇关于ZOJ 1006 Do the Untwist 加密解密 模拟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!