【密技】如何與你家的貓咪溝通

發布時間: July 10, 2022, 2:56 p.m.   最後更新時間: Sept. 14, 2023, 10:20 p.m.   時間限制: 1000ms   記憶體限制: 128M

看著家裡的兩隻貓慵懶地躺在地上,無聊的你心裡想著:「他們平常都在那邊互相喵來喵去的,一定是在密謀著什麼詭計!」

帶著吃飽太閒的氣勢,你開始分析起了那兩隻貓間的語言。

幸運的是,你成功破解了他們的幾個基本發音,並將其對應上人類的英文字母。而就在建立起這套拼音系統後,你驚訝地發現了貓咪之間竟然是用某種加密方式,將英語單字處理後再講出來。難怪人類聽不懂貓的語言!

為了要破解牠們的語言,首先要先將英文字母依序編號:A 為 01、B 為 02、C 為 03,以此類推,Z 為 26。

會員編輯對應表.jpg

因此,我們就可以用字母編號來書寫單字。例如:love = 12152205。

然後我們將會有以下三個訊息:明文、鑰匙、密文。

我們將選擇一個單字作為我們的鑰匙,然後將其長度透過重複書寫或刪去多餘的字母以符合明文長度。例如:明文為 hellokitty,鑰匙為 cat,則我們需要將鑰匙延長為 catcatcatc;明文為 cat,鑰匙為 sleepy,則我們需要將鑰匙刪減為 sle。

有了等長的明文與鑰匙後,我們將兩者利用代號書寫並將其數字相加,即可得到密文。例如:明文為 hello(0805121215),鑰匙為 cat(030120)。延長鑰匙得到 catca(0301200301),再將明文的數字編號加上延長後的密文數字編號,即可得到密文 1106321516(0805121215 + 0301200301)。另外,要注意密文中的兩個字元為一單位。

今天你無意間得知你家裡的貓咪們是用「meow」當作牠們的鑰匙。請你寫出一個程式,將你從牠們口中偷聽來的訊息解密成人類聽得懂的文字。

連續輸入,以分行間隔。
每行有一串 0~9 的數字,代表密文。
每串密文長度不超過 18 個數字。

依序輸出解密後的明文。
全為小寫英文,以分行間隔。

複製範例
1407182718
26103046
abcde
meow
  • long long int 轉 string 的函式為 std::to_string(),記得要 #include<string>
  • string 轉 long long int 的函式為 std::stoll(),記得要 #include<string>
  • ascii 表中,a 的編號為 97、b 為 98,以此類推,z 為 122。

string

竹中軟研37th第二次競賽(社內賽)