NOIP 2012 提高組 Vigen re密碼

2021-07-24 11:45:40 字數 1456 閱讀 7210

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-'a'+ki-'a')mod26+'a',運算?的規則如下表所示:

vigenere加密在操作時需要注意: 

1. ?運算忽略參與運算的字母的大小寫,並保持字母在明文m中的大小寫形式; 

2. 當明文m的長度大於金鑰k的長度時,將金鑰k重複使用。

輸入共2行。 

第一行為乙個字串,表示金鑰k,長度不超過100,其中僅包含大小寫字母。第二行為乙個字串,表示經加密後的密文,長度不超過1000,其中僅包含大小寫字母。

輸出共1行,乙個字串,表示輸入金鑰和密文所對應的明文。

completevictory

yvqgpxaimmklongnzfwpvxmniytm

wherethereisawillthereisaway

每個測試點1s

對於100%的資料,輸入的金鑰的長度不超過100,輸入的密文的長度不超過1000,且都僅包含英文本母。

noip2012提高組複賽day1t1

啥都不說了 就是沒事寫到水題讓自己開心開心 o(∩_∩)o哈哈~

#include#include#include#include#include#include#include#include#include#include#include#define maxn 2037

using namespace std;

int lc;

int lk;

int sm[maxn];

int f[37][37];

string c;

string k;

string m;

string sc;

string sk;

inline string work(string a)

inline void solve()

{ for (int i=0;i<=25;i++)

for (int j=0;j<=25;j++)

f[i][j]=(i+j)%26;

cin>>k; sk=work(k); lk=sk.length();

cin>>c; sc=work(c); lc=sc.length();

for (;lk=97) sm[i]=sm[i]-'a'+'a';

for (int i=0;i

NOIP2012提高組 借教室

這個題目是個一眼題啊,維護一下一段區間內教室數的最小值,線段樹搞就可以了,lazy標記打一打,來乙個訂單先詢問再區間減,codevs上是可以過的,只不過嘛。debug大神。include include include include includeconst int maxn 1e6,maxnod...

NOIP 2012 提高組 借教室

在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式設計解決這個問題。我們需要處理接下來n天的借教室資訊,其中第i天學校有ri個教室可供租借。共有m份訂單,...

NOIP2012提高組 疫情控制

noip2012 提高組 day2 試題。h 國有 n 個城市,這 n 個城市用 n 1 條雙向道路相互連通構成一棵樹,1 號城市是首都,也是樹中的根節點。h 國的首 都爆發了一種危害性極高的傳染病。當局為了控制疫情,不讓疫情擴散到邊境城市 葉子節點所表示的城市 決定動用軍隊在一些城市建立檢查點,使...