蓝桥 卷“兔”来袭编程竞赛专场-07明码加密 题解

news/2024/11/24 1:40:04/

赛题介绍

挑战介绍

  • 清末,电报技术进入中国。上海大北水线电报公司在 1871 年选用了六千八百九十七个汉字,代以四码数字,编写成了中国最早的电报明码本。为了传输的内容可以保密,又设计出了将明码本加密的方法,于是就有了比较复杂的密码。后来,这种加密技术被应用在军事和商业情报机构中。
  • 加密的具体方法是:例如“布”这个字的电报电码为 1530,加密和减密的钥匙均为 9853。先用明码的四个数字分别与加密钥匙的四个数字相加,例如第一位数相加  1 + 9 = 10 ,凡 10 都作  0 ;第二位数相加  5 + 8 = 13 ,隐去 10,只作  3 ;第三位数相加  3 + 5 = 8 ;第四位数相加(如果是 0,则作 10 )  10 + 3 = 13 ,隐去 10,只作  3 。那么“布”的明码 1530 就成了密码 0383。解密时相反,使用密码减去解密钥匙的四个数字,即可获得明码,从而找到对应的文字。

挑战目标

补充文件  plain_code.py  下  plain_code_encryption(numb)  函数中的 TODO 部分,使其实现我们需要的功能:

  • 输入一个 0 - 9999 (包含 0 和 9999)之间的任意数,然后加上 9853,相加之后得到一个 4 位数(str 格式)并返回。
  • 如果传入的数字不足 4 位,则缺失位置以 0 填补。例如输入数字为 32,则需要当作 0032。
  • 相同位置的数字进行相加,如果相加之后大于等于 10,则隐去 10,只保留个位位置的数字。
  • 如果输入的数字不在 0 - 9999 之间,则返回  None
def plain_code_encryption(numb: int) -> str:"""TODO"""encryption_text : str = ''return encryption_text

挑战要求

  • 题目需使用 Python3 完成,不能使用标准库和第三方库。
  • 函数传入 numb 为整型类型,可能为 -1、11111 等值。
  • 不得修改文件路径、文件名  plain_code.py  以及函数名 plain_code_encryption(numb)
  • 请只保留文件  plain_code.py  及文件中函数,不要添加测试或执行代码,避免检测时出错。
  • 线上环境调试代码时,请使用  python3 plain_code.py  命令调用 Python3。

参考样例

# 样例 1
numb = 1530; encryption_text = "0383"
# 样例 2
numb = 0; encryption_text = "9853"
# 样例 3
numb = 12345; encryption_text = None

注意:最终实现效果以完全满足要求为准,而不是仅满足如上样例。


题解

解题思路

简单的模拟题

  1. 要注意对传入参数长度的检查。
  2. 利用模运算符进行取余运算获取余数。
  3. 最后使用join方法将列表拼接为字符串返回即可。
def plain_code_encryption(numb: int) -> str:"""TODO"""result = []crypt = "9853"if not 0 <= int(numb) <=9999:return Nonestr_numb = str(numb)str_numb = str_numb.rjust(4,'0')for index, value in enumerate(str_numb):if (int(value) + int(crypt[index])) < 10:result.append(str(int(value) + int(crypt[index])))else:result.append(str((int(value) + int(crypt[index])) % 10))encryption_text : str = ''.join(result)return encryption_text

题目来源:蓝桥 明码加密


http://www.ppmy.cn/news/47422.html

相关文章

华为OD机试真题(Java),最小步骤数(100%通过+复盘思路)

一、题目描述 一个正整数数组 设为nums&#xff0c;最大为100个成员&#xff0c;求从第一个成员开始正好走到数组最后一个成员所使用的最小步骤数。 要求&#xff1a; 第一步 必须从第一元素起 且 1<第一步步长<len/2 (len为数组长度)&#xff1b;从第二步开始只能以所…

Junit概述和快速入门

单元测试概述 在程序中&#xff0c;一个单元可以是一个完整的模块&#xff0c;但它通常是一个单独的方法或者程序 在面向对象的编程中&#xff0c;一个单元通常是整个界面&#xff0c;例如类&#xff0c;但可能是单个方法 JUnit是一个java编程语言的单元测试框架 通过先为最…

从头创建一个新的浏览器,这合理吗?

从头构建一个新浏览器&#xff1f;这如果是不是个天大的“伪需求”&#xff0c;便是一场开发者的噩梦&#xff01; 要知道&#xff0c;如果没有上百亿的资金和数百名研发工程师的投入&#xff0c;从头开始构建一个新的浏览器引擎&#xff0c;几乎是不可能的。然而SerenityOS系统…

Ubuntu18.04通过一根网线与树莓派建立连接,远程操作树莓派,向树莓派传文件

文章目录 前言1 树莓派设置静态IP1.1 不能登录到树莓派的图形化界面1.2 可以登录到树莓派的图形化界面 2 PC端的ubuntu18.04设置静态ip地址2.1 不使用图形化界面操作2.2 使用图形化界面进行操作 3 Putty软件3 FileZilla软件 前言 本篇博客的应用场景&#xff0c;前提条件如下&a…

【原理图专题】OrCAD Capture 设计规则(DRC)检查

在原理图设计完成后,需要进行DRC检查,DRC检查能协助工程师快速检查原理图的物理、电气规则是否正确,能快速定位错误和原因。 DRC检查从Capture 工具栏中如下图红框所示的图标中Design Rules Check进入 进入后将打开DRC窗口,有四个选项卡。分别是Design Rules Options、Elec…

区域检验管理系统(云LIS)源码

1、区域检验管理系统&#xff08;云LIS&#xff09;概述 云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序&#xff0c;可协助区域内所有临床实验室相互协调并完成日常检验工作&#xff0c;对区域内的检验数据进行集中管理和共享&#xff0c;通过对质量控制的管理&am…

OrCAD创建原理图库

OrCAD创建原理图库 概述常规器件建库方法大封装器件建库基于pinout表格创建原理图库导入方法&#xff1a; 通过fsp软件导入fpga原理图库 概述 原理图库是硬件设计的基本工作&#xff0c;每个新人都要先学会建库&#xff0c;才能开始画图&#xff0c;本文主要介绍几种常用的建库…

5.2 中心极限定理

学习目标&#xff1a; 要学习中心极限定理&#xff0c;我会采取以下几个步骤&#xff1a; 学习基本概念&#xff1a;了解什么是随机变量、样本、总体、概率密度函数等基本概念&#xff0c;为学习中心极限定理打下基础&#xff1b;学习正态分布&#xff1a;中心极限定理的核心…