zoj1006
来源:互联网 发布:photoshopcs4软件下载 编辑:程序博客网 时间:2024/06/16 09:37
这是一道有关加密解密的题目,一开始读题不是很仔细看成了单纯的加密题目,最后做出来发现样例都跑反了,再看一眼题目发现是给我们密文,要求写出明文,一开始还以为要用到逆元之类的东西,后面发现原来只要plaincode[k*i%str1.size()]=ciphercode[i]+i;
然后把plaincode保持在0-27之间的大小就可以了。
#include<iostream>#include<stdio.h>#include<math.h>#include<cstring>#include<map>using namespace std;map<char ,int > Map;map<char ,int >::iterator it;int plaincode[100];int ciphercode[100];int main(){// freopen("input.txt","r",stdin); for(int i=0;i<=27;i++){ if(i==0) Map['_']=0; else if(i==27) Map['.']=27; else Map['a'+i-1]=i; } string str1,str2; int k; while(cin>>k&&k){ cin>>str1; for(int i=0;i<str1.size();i++){ it=Map.find(str1[i]); ciphercode[i]=it->second; } for(int i=0;i<str1.size();i++){ plaincode[k*i%str1.size()]=ciphercode[i]+i; while(plaincode[k*i%str1.size()]>=28) { plaincode[k*i%str1.size()]-=28; } // cout<<plaincode[i]<<endl; } int j=0; for(int i=0;i<str1.size();i++) { for(it=Map.begin();it!=Map.end();it++){ if(it->second==plaincode[i]) { cout<<it->first; break; } } } cout<<endl; }}
0 0
- zoj1006
- ZOJ1006
- zoj1006
- ZOJ1006
- zoj1006
- zoj1006
- ZOJ1006
- zoj1006
- zoj1006
- ZOJ1006
- ZOJ1006 Do the Untwist
- ZOJ1006 untwist_Show Problem
- ZOJ1006解题报告
- zoj1006-Do the Untwist
- [水]ZOJ1006
- ZOJ1006-Do the Untwist
- Min stack
- UIButton中setTitleEdgeInsets和setImageEdgeInsets的使用
- 高位优先的字符串排序
- enum
- Android 多媒体应用——VideoView播放视频
- zoj1006
- Excel Sheet Column Title
- AndroidStudio导入库文件
- C++Primer第五版 8.1.2节练习
- 2015各地高温补贴发放标准时间一览表
- hdu2009
- Android 多媒体应用——MediaPlayer与SurfaceView播放视频
- 解答:为什么蚊子咬的包会痒痒
- Rotate Array