12:加密的病历单
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。
在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。
经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)
1. 原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz)
2. 逆序存储(abcd -> dcba )
3. 大小写反转(abXY -> ABxy) - 输入
- 一个加密的字符串。(长度小于50且只包含大小写字母)
- 输出
- 输出解密后的字符串。
- 样例输入
-
GSOOWFASOq
- 样例输出
-
Trvdizrrvj
- 来源
- 医学部计算概论2011年期末考试(王志钢)改编
-
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 char a[100001]; 6 char ans[1001]; 7 int now; 8 int main() 9 { 10 gets(a); 11 int l=strlen(a); 12 for(int i=0;i<l;i++) 13 { 14 if(a[i]>=65&&a[i]<=90)a[i]=a[i]+32; 15 else a[i]=a[i]-32; 16 }//大小写转换 17 for(int i=l-1;i>=0;i--) 18 { 19 ans[now]=a[i]; 20 now++; 21 } //倒序 22 for(int i=0;i<l;i++) 23 { 24 if((ans[i]>=65&&ans[i]<=87)||(ans[i]>=97&&ans[i]<=119)) 25 ans[i]=ans[i]+3; 26 else 27 { 28 ans[i]=ans[i]-23; 29 } 30 } 31 puts(ans); 32 return 0; 33 }