計蒜客 T1112 加密的病歷單 字串處理

2021-10-05 15:44:13 字數 1450 閱讀 8093

2. 解讀

3. **

time limit: 1000 ms

memory limit: 65536 kb

小英是藥學專業大三的學生,暑假期間獲得了去醫院藥房實習的機會。

在藥房實習期間,小英紮實的專業基礎獲得了醫生的一致好評,得知小英在計算概論中取得過好成績後,主任又額外交給她一項任務,解密抗戰時期被加密過的一些傷員的名單。

經過研究,小英發現了如下加密規律(括號中是乙個 「原文 →

\to→ 密文」 的例子)

原文中所有的字元都在字母表中被迴圈右移了三個位置( abz -> dec )

逆序儲存 (abcd -> dcba )

大小寫反轉 (abxy -> abxy)

原文。(長度小於 50 且只包含大小寫字母)

輸出加密後的字串。

輸出時每行末尾的多餘空格,不影響答案正確性

gsoowfasoq
trvdizrrvj
計蒜客 t1112 加密的病歷單

字串處理,考慮大小寫字母對應的ascii

a −z

:65−90

a - z: 65 - 90

a−z:65

−90a−z

:97

−122

a - z: 97 - 122

a−z:97

−122

要對字母進行大小寫反轉,只需要將大寫字母的ascii碼加上32,小寫字母的ascii碼減去32即可。

此處還需要注意的乙個問題是,題目要求字元迴圈右移,所以需要判斷移位後會超出範圍的字母,將其超出範圍的值加上aa,即可得到其迴圈右移的結果。

#include

#include

using

namespace std;

intmain()

else

}// 逆序儲存

string bufferrev;

bufferrev.

resize

(buffersize)

;// 逆序

for(size_t i =

0; i < buffersize; i++

)// 所有字元右移三位

for(size_t i =

0; i < buffersize; i++)}

else}}

// 輸出

printf

("%s\n"

, bufferrev.

c_str()

);}}

github:

計蒜客 T1112 加密的病歷單

解題思路 主要的問題就是如何實現所有的字元都在字母表中迴圈右移三個位置 先先初始化兩個字串陣列,分別訪問26位大小寫字母。然後大寫後移n為即 big str i a 3 26 小寫類似。include include includeusing namespace std int main char ...

計蒜客 資訊學題庫 T1112 加密的病歷單

t1112 加密的病歷單 小英是藥學專業大三的學生,暑假期間獲得了去醫院藥房實習的機會。在藥房實習期間,小英紮實的專業基礎獲得了醫生的一致好評,得知小英在計算概論中取得過好成績後,主任又額外交給她一項任務,解密抗戰時期被加密過的一些傷員的名單。經過研究,小英發現了如下加密規律 括號中是乙個 原文 密...

計蒜客 T1582 去掉重複的

題目描述 給你乙個長度為 n的陣列 a,希望你可以去掉一些重複的元素。但是有一些額外的要求 刪除元素後,還需要保證原來的相對順序。對於重複元素,希望可以保留最後出現的元素。輸入描述 第一行輸入乙個整數 n,表示陣列 a 的長度。接下來一行有 n 個整數 ai。輸出描述 第一行輸入乙個整數,表示去重後...