seansie's blog

Zerojudge a009. 解碼器 C++題解

Zerojudge a009. 解碼器 題目連結

程式碼:

C++

#include<iostream>
#include<string>
using namespace std;

int main (){
    string in; // 宣告一個字串變數 in
    int i; // 宣告一個整數變數 i

    // 讀取輸入字串
    getline(cin,in);

    // 將每個字元減去 7
    for(i=0;i<in.size();i++){
        in[i]=in[i]-7;
    }

    // 輸出解密後的字串
    cout<<in;

    return 0;
}

程式碼說明:

  1. 首先,程式碼包含了 iostreamstring 兩個標準函式庫,分別用於輸入輸出和字串操作。
  2. 程式碼接著宣告了兩個變數:iniin 用於儲存輸入的密文字串,i 用於迴圈控制。
  3. 使用 getline 函式讀取輸入字串並儲存在 in 變數中。
  4. 使用 for 迴圈遍歷 in 字串中的每個字元。
  5. 在迴圈內,將每個字元的 ASCII 碼值減去 7。由於 ASCII 碼表中可列印字元的範圍是 32 到 127,因此減去 7 後的結果仍然在可列印字元的範圍內。
  6. 最後,使用 cout 函式輸出解密後的字串。

密鑰推導:

根據題目敘述,密鑰是需要自行參照範例輸入和輸出推導出來。在範例輸入和輸出中,可以觀察到密文和明文的差異。例如,在第一個範例中,密文 crrng 和明文 apple 的每個字元相差 2。因此,可以推斷密鑰為 2

結論:

這段程式碼實現了凱撒密碼的解密功能。使用者可以輸入一段密文,程式碼會根據密鑰將其解密成明文。