zoukankan      html  css  js  c++  java
  • icode 10 加密的病历单

    小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。

    在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。

    经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)

    1.  原文中所有的字符都在字母表中被循环左移了三个位置(dec  -> abz)

    如果是x~z,含x和z里(不区分大小写)的字母,他左移三个字母就到了abc,也就是将ASCII-23

    如果是a~w,含a和w里(不区分大小写)的字母,他左移三个字母是正常的,也就是将ASCII+3

    2.  逆序存储(abcd -> dcba )

    按照正常的顺序存的话:s2[i] = s1[i];就可以了

    可是要求是逆序存:len表示长度,i表示目前的位置,输入从0开始(待会要-1)

    s2[len-i-1] = s1[i];就可以了

    3.  大小写反转(abXY -> ABxy)

    s[i] 如果是小写的话:s2[len-i-1] = s1[i]-'a'+'A';从小写变大写

    s[i] 如果是大写的话:s2[len-i-1] = s1[i]-'A'+'a';从大写变小写

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    char a[50], b[50];
    int len = 0;
    
    int main(){
        scanf("%s", a);
        while(a[len] != ''){
            len++;
        }
        for(int i = 0;i < len;i++){
            if(a[i] >= 'x' && a[i] <= 'z'){
                b[len-i-1] = a[i] - 'a' + 'A' - 23;
            }else if(a[i] >= 'a' && a[i] <= 'w'){
                b[len-i-1] = a[i] - 'a' + 'A' + 3;
            }else if(a[i] >= 'X' && a[i] <= 'Z'){
                b[len-i-1] = a[i] + 'a' - 'A' - 23;
            }else if(a[i] >= 'A' && a[i] <= 'W'){
                b[len-i-1] = a[i] + 'a' - 'A' + 3;
            }
        }
        for(int i = 0;i < len;i++){
            printf("%c", b[i]);
        }
        return 0;
    }
  • 相关阅读:
    因果,稳定,无源,无损系统(1)
    傅里叶变化公式解析(1)
    线性时不变系统(1)
    数字信号常用典型序列(1)
    k均值聚类(1)
    jupyter notebook configtips
    gitlab搭建,结合pycharm和vs2015配置用于开发python和c++
    wordpress网站迁移
    本地电脑通过Navicat连接阿里云的Mysql数据库
    ubuntu安装时系统分区设置
  • 原文地址:https://www.cnblogs.com/elisa02/p/13519763.html
Copyright © 2011-2022 走看看