Noip2012 Day1 T1 Vigenère 密码
来源:互联网 发布:php实例 百度网盘 编辑:程序博客网 时间:2024/05/18 08:52
问题描述
16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密码。
Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。
在密码学中,我们称需要加密的信息为明文,用 M 表示;称加密后的信息为密文,用C 表示;
而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为 k。
在 Vigenère 密码中,密钥 k 是一个字母串,k=k1k2…kn。当明文 M=m1m2…mn时,得到的密文 C=c1c2…cn,其中 ci=mi?ki,
运算?的规则如下表所示:
Vigenère 加密在操作时需要注意:
?运算忽略参与运算的字母的大小写,并保持字母在明文 M 中的大小写形式;
当明文 M 的长度大于密钥 k 的长度时,将密钥 k 重复使用。
例如,明文M=Helloworld,密钥 k=abc 时,密文 C=Hfnlpyosnd。
输入格式:
输入共 2 行。
第一行为一个字符串,表示密钥k,长度不超过 100,其中仅包含大小写字母。第二行
为一个字符串,表示经加密后的密文,长度不超过 1000,其中仅包含大小写字母。
输出格式:
输出共 1 行,一个字符串,表示输入密钥和密文所对应的明文。
输入输出样例:
CompleteVictory
Yvqgpxaimmklongnzfwpvxmniytm
Wherethereisawillthereisaway
【数据说明】
对于 100%的数据,输入的密钥的长度不超过 100,输入的密文的长度不超过 1000,且都仅包含英文字母。
思路
2012 Day 1 第一题
字符串的纯水题
只要知道明文等于密文减去密匙的ASCll码 - 65 (大写)/ 97(小写)
记得判断大小写
代码
#include<iostream>using namespace std;string k,m;int lenk,lenm,key[105],l;int main(){ cin>>k; cin>>m; lenk=k.size(); lenm=m.size(); for(int i=0;i<lenk;i++) { if(k[i]>=97) key[i]=k[i]-'a'; else key[i]=k[i]-'A'; } for(int i=0;i<lenm;i++) { if(l>=lenk) l=0; if(m[i]>='A'&&m[i]<='Z') { if(m[i]-key[l]<65) m[i]=m[i]-key[l]+26; else m[i]=m[i]-key[l]; } if(m[i]>='a'&&m[i]<='z') { if(m[i]-key[l]<97) m[i]=m[i]-key[l]+26; else m[i]=m[i]-key[l]; } l++; } cout<<m; return 0;}
- Noip2012 Day1 T1 Vigenère 密码
- 【NOIP 2012 Day1 T1】Vigenère密码(模拟)
- NOIP2012 Vigenère密码
- 【noip2012】Vigenère密码
- NOIP2012 Vigenère 密码
- 【NOIP2012】 Vigenère密码
- noip2012 Vigenère密码
- 【noip2012】Vigenère 密码
- 【模拟】[NOIP2012]Vigenère密码
- [noip2012]Vigenère 密码 题解
- NOIP2012复赛day1 Vigenère密码 简单的一题
- NOIP2012 Vigenère 密码
- NOIP2012复赛提高组day1(A:Vigenère 密码 B:国王游戏 C:开车旅行)
- 洛谷 P1079 [NOIP2012 D1T1] Vigenère 密码
- 【jzoj3099】【NOIP2012提高组】【Vigenère密码】
- CodeVs 1197 && noip 2012 Day1 Vigenère密码
- Vigenère 密码
- wikioi1197 Vigenère密码
- oracle高级用法之自定义函数
- 简谈ICO
- HDU6015(思维题)
- JZOJ 3418. 【NOIP动态规划专题】选课
- 鸽巢原理
- Noip2012 Day1 T1 Vigenère 密码
- 3 资源管理
- mysql 视图 以及存储过程小总结
- 洗牌算法-Shuffle an Array
- ionic3+angular4动态设置入口页rootpage,根据不同的状态值来确定不同的入口页
- 命令行参数的获取
- CSS 样式书写规范
- 2017 Multi-University Training Contest
- H5面试--弹出的a和b分别是什么