字符加密 C語言期末模擬
麻煩emmm
簡(jiǎn)單的字符串加密分為以下幾個(gè)步驟:
步驟1.羅馬數(shù)字轉(zhuǎn)換成為一位數(shù)。
解釋:
(1)讀入一個(gè)字符串類型的羅馬數(shù)字,將其轉(zhuǎn)化為整型數(shù)字;接著,不斷地取該整型數(shù)字的各位數(shù)字之和的方式來對(duì)于數(shù)字進(jìn)行縮小,直到將其變成一個(gè)小于10的數(shù)字(例如:12345→ 15 → 6) 得到這個(gè)一位數(shù)之后,我們將其作為隨機(jī)種子進(jìn)行進(jìn)一步處理,該數(shù)字記為seed。
(2)羅馬數(shù)字轉(zhuǎn)換有著下面的規(guī)則:
羅馬數(shù)字包含以下七種字符: I, V, X, L,C,D 和 M。
?例如, 羅馬數(shù)字 2 寫做 II ,即為兩個(gè)并列的 1。12 寫做 XII ,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 。
通常情況下,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數(shù)字 1 在數(shù)字 5 的左邊,所表示的數(shù)等于大數(shù) 5 減小數(shù) 1 得到的數(shù)值 4 。同樣地,數(shù)字 9 表示為 IX。這個(gè)特殊的規(guī)則只適用于以下六種情況:
?I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
?X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。?
?C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。
步驟2. 讀取一個(gè)長(zhǎng)度為25的整型數(shù)字序列,對(duì)其進(jìn)行升序排序,將排序后的序列,選取第seed位的數(shù)字作為凱撒密碼的密鑰。
步驟3. 使用密鑰對(duì)輸入的字符串(全部是小寫字符)進(jìn)行簡(jiǎn)單加密。
解釋:凱撒密碼的加密規(guī)則是:對(duì)字符串中每個(gè)字符的ASCII碼增加一個(gè)偏移量。
例如:密鑰為28,則28對(duì)26取模后為2,字符變?yōu)椋篴→c,b→d,z→b,y→a
即將密鑰對(duì)于26整除的余數(shù)作為字符串簡(jiǎn)單加密的偏移量。
注意:在簡(jiǎn)單加密中我們只考慮小寫字母的加密,對(duì)于空格、標(biāo)點(diǎn)符號(hào)、大寫字母不進(jìn)行處理。
請(qǐng)聰明的你按照上述操作輸出加密后的字符串。
輸入描述
共三行:
?第一行:字符串,表示需要進(jìn)行轉(zhuǎn)換的羅馬數(shù)字;
第二行:需要進(jìn)行排序的初始隨機(jī)序列;
第三行:原始的未加密字符串;
輸出描述
共n行,表示n組加密之后的字符串;
樣例輸入
?LVIII
?1123 4 56 89 12 2125 45 78 546 456 126 96 325 789 415 753 592 741 789 30 36 32 39 336 895
?I love Beijing Institute of Technology !
樣例輸出
【解釋】:LVIII 對(duì)應(yīng)的整型數(shù)字是58,求各位數(shù)字之后最終結(jié)果為4,該序列排序之后第四位的數(shù)字是32,則偏移量為6,因此得到對(duì)應(yīng)的輸出為
“I rubk Bkopotm Ityzozazk ul Tkinturume !”
數(shù)據(jù)范圍
羅馬數(shù)字范圍在[1,3999]之間,整型數(shù)字序列內(nèi)所有的數(shù)字在[1,30000]之間。
