一起来交流编程吧【CSDN app】:
http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=x9pL9ccIHGKNLE0CWviAqQ_q6HzxomLW&authKey=VslKe623ptw8VRepda%2Bh0Ttr8Ruz8v%2FBW5HpVzyTWU7ECwpHIZpULMj6qIHYZBVb&noverify=0&gro
[NOIP2012 提高组] Vigenère 密码
题目描述
16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法 Vigenère 密码。Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。
在密码学中,我们称需要加密的信息为明文,用 M M M 表示;称加密后的信息为密文,用 C C C 表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为 k k k。在 Vigenère 密码中,密钥 k k k 是一个字母串, k = k 1 , k 2 , ... , k n k=k_1,k_2,...,k_n k=k1,k2,...,kn。当明文 M = m 1 , m 2 , ... , m n M=m_1,m_2,...,m_n M=m1,m2,...,mn 时,得到的密文 C = c 1 , c 2 , ... , c n C=c_1,c_2,...,c_n C=c1,c2,...,cn,其中 c i c_i ci= m i ® k i m_i \operatorname{\circledR} k_i mi®ki,运算 ® \circledR ® 的规则如下表所示:
\\begin{array}{c\|cccccccccccccccccccccccccc} \\circledR \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \\\\hline \\tt A \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \\ \\tt B \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \\ \\tt C \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \\ \\tt D \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \\ \\tt E \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \\ \\tt F \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \\ \\tt G \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \\ \\tt H \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \\ \\tt I \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \\ \\tt J \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \\ \\tt K \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \\ \\tt L \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \\ \\tt M \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \\ \\tt N \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \\ \\tt O \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \\ \\tt P \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \\ \\tt Q \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \\ \\tt R \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \\ \\tt S \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \\ \\tt T \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \\ \\tt U \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \\ \\tt V \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \\ \\tt W \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \\ \\tt X \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \\ \\tt Y \&\\tt Y \\kern{-5pt} \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \\ \\tt Z \&\\tt Z \\kern{-5pt} \&\\tt A \\kern{-5pt} \&\\tt B \\kern{-5pt} \&\\tt C \\kern{-5pt} \&\\tt D \\kern{-5pt} \&\\tt E \\kern{-5pt} \&\\tt F \\kern{-5pt} \&\\tt G \\kern{-5pt} \&\\tt H \\kern{-5pt} \&\\tt I \\kern{-5pt} \&\\tt J \\kern{-5pt} \&\\tt K \\kern{-5pt} \&\\tt L \\kern{-5pt} \&\\tt M \\kern{-5pt} \&\\tt N \\kern{-5pt} \&\\tt O \\kern{-5pt} \&\\tt P \\kern{-5pt} \&\\tt Q \\kern{-5pt} \&\\tt R \\kern{-5pt} \&\\tt S \\kern{-5pt} \&\\tt T \\kern{-5pt} \&\\tt U \\kern{-5pt} \&\\tt V \\kern{-5pt} \&\\tt W \\kern{-5pt} \&\\tt X \\kern{-5pt} \&\\tt Y \\kern{-5pt} \\ \\end{array}
Vigenère 加密在操作时需要注意:
- ® \circledR ® 运算忽略参与运算的字母的大小写,并保持字母在明文 M M M 中的大小写形式;
- 当明文 M M M 的长度大于密钥 k k k 的长度时,将密钥 k k k 重复使用。
例如,明文 M = Helloworld M=\texttt{Helloworld} M=Helloworld,密钥 k = abc k=\texttt{abc} k=abc 时,密文 C = Hfnlpyosnd C=\texttt{Hfnlpyosnd} C=Hfnlpyosnd。
KaTeX parse error: Expected a control sequence at position 6: \def{̲\arraystretch}{...
输入格式
共 2 行。
第一行为一个字符串,表示密钥 k k k,长度不超过 100 100 100,其中仅包含大小写字母。
第二行为一个字符串,表示经加密后的密文,长度不超过 1000 1000 1000,其中仅包含大小写字母。
输出格式
一个字符串,表示输入密钥和密文所对应的明文。
样例 #1
样例输入 #1
CompleteVictory
Yvqgpxaimmklongnzfwpvxmniytm
样例输出 #1
Wherethereisawillthereisaway
提示
对于 100 % 100\% 100% 的数据,输入的密钥的长度不超过 100 100 100,输入的密文的长度不超过 1000 1000 1000,且都仅包含英文字母。
NOIP 2012 提高组 第一天 第一题
cpp
#include<bits/stdc++.h>
using namespace std;
long long q,w,r,t,y,u,i,o,p,s,g,h,j,k,l,m,n,v,x,z,kk,d[10000];
string b,a;
int main()
{
cin>>b>>a;
for(i=1;i<=b.size();i++)
{
if(b[i-1]<='Z'&&b[i-1]>='A')
d[i]=b[i-1]-65;
if(b[i-1]<='z'&&b[i-1]>='a')
d[i]=b[i-1]-97;
}
for(i=1;i<=a.size();i++)
{
if(a[i-1]<='Z'&&a[i-1]>='A')
{
a[i-1]-=d[(i-1)%b.size()+1];
if(a[i-1]<65)
a[i-1]+=26;
}
if(a[i-1]<='z'&&a[i-1]>='a')
{
a[i-1]-=d[(i-1)%b.size()+1];
if(a[i-1]<97)
a[i-1]+=26;
}
}
cout<<a;
return 0;
}