Zerojudge a009. 解碼器 C++題解
程式碼:
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;
}
程式碼說明:
- 首先,程式碼包含了
iostream
和string
兩個標準函式庫,分別用於輸入輸出和字串操作。 - 程式碼接著宣告了兩個變數:
in
和i
。in
用於儲存輸入的密文字串,i
用於迴圈控制。 - 使用
getline
函式讀取輸入字串並儲存在in
變數中。 - 使用
for
迴圈遍歷in
字串中的每個字元。 - 在迴圈內,將每個字元的 ASCII 碼值減去 7。由於 ASCII 碼表中可列印字元的範圍是 32 到 127,因此減去 7 後的結果仍然在可列印字元的範圍內。
- 最後,使用
cout
函式輸出解密後的字串。
密鑰推導:
根據題目敘述,密鑰是需要自行參照範例輸入和輸出推導出來。在範例輸入和輸出中,可以觀察到密文和明文的差異。例如,在第一個範例中,密文 crrng
和明文 apple
的每個字元相差 2。因此,可以推斷密鑰為 2。
結論:
這段程式碼實現了凱撒密碼的解密功能。使用者可以輸入一段密文,程式碼會根據密鑰將其解密成明文。