环形加密问题(基础)

文章目录


前言

为什么想到会做这个环形加密问题的解析呢?那是因为最近在学校作业——PTA平台上看到了这题,我认为这题还是很有价值的,它用到了以下的知识点:选择结构(if语句的运用)、ASCII值与其字母字符的对应、整型和字符类型的关系。

一、题目论述

 

         题目的大致情况基本就是如上两张图片所呈现的样子。

二、题目详解

1.解题过程

  解题过程中的

  作者最开始看到这题key值分正负时,就以普遍理性而言,肯定是先去把它正负先分了,然后发现答案错误。嘶。。。。。这就很难受了,后来仔细思考了一下,发现分正负的做法其实并没有必要,我们只需在结果输出的阶段,对结果做+26和-26的操作,就能达到一样的效果。

  以下是整体的分析:

  首先,我们看到这道题想实现的加密效果就是——输入一个字母,再输入一个数字(这个数字有正负,正的话,就往顺时针走这个数字个单位,反之就往逆时针)

  值得注意的是,密钥数字是可以大于26的,但问题是字母表一共就26个字母。这时,我们深入思考一下,便会发现如果大于26,那就是字母在转圈,这就成了一个周期性的东西,因此,我们只需要  n%26(n是密钥),便能知道它在一圈中前进的单位数。

  其中,题目所给的全是小写字母,而我们知道小写字母的ASCII值的范围是(97<=n<=122),所以,我们可以直接分为三种情况(小于97、97到122之间、大于122),对其用if语句判断。

  最后,在选择判断后对其进行输出。在小于97和大于122时,就是密钥大于26的情况,要对它进行+-26的操作。

  以上就是整个解题过程。

2.正确答案

代码如下(示例):


总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了基础环形加密问题的基本方法。如果读者有更加简便的方法,欢迎大家一起讨论。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值