洛谷 P1079 Vigen re 密碼

2021-07-14 22:15:13 字數 1233 閱讀 7450

題目描述

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 行,乙個字串,表示輸入金鑰和密文所對應的明文。

輸入輸出樣例

輸入樣例#1:

completevictory

yvqgpxaimmklongnzfwpvxmniytm

輸出樣例#1:

wherethereisawillthereisaway

說明【資料說明】

對於 100%的資料,輸入的金鑰的長度不超過 100,輸入的密文的長度不超過 1000,且

都僅包含英文本母。

noip 2012 提高組 第一天 第一題

一道簡單的字串模擬題。。。

#include

#include

#include

using

namespace

std;

char key[101],mi[1001],ming[1001];

int main()

printf("%s\n",ming);

return

0;}

洛谷 P1079 Vigen re 密碼

題目描述 16 世紀法國外交家 blaise de vigen re 設計了一種多表密碼加密演算法 vigen re 密碼。vigen re 密碼的加密解密演算法簡單易用,且破譯難度比較高,曾在美國南北戰爭中為南軍所廣泛使用。在密碼學中,我們稱需要加密的資訊為明文,用 m 表示 稱加密後的資訊為密文...

洛谷P5049 洛谷P5022 題解 旅行

原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...

洛谷練習P2279 P1346

2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,經常引發火...