某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5, 然后用和除以10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换

这篇博客介绍了一个四位整数的加密过程,加密规则包括每位数字加5后取模10的余数,以及数字位的交换。然后提供了解密算法,通过判断加密后的数字范围还原原始数值。代码示例展示了如何对1000到9999之间的数字进行加密和解密操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5, 然后用和除以10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换

分析

这道题是把一个四位数字加密后输出一次,然后再把加密的数字还原
先把四位数据接受,然后分别获取一至四位数字
(num+5)%10=加密后的数字,
加密后的数字(5到9)-5=原来的数字
加密后的数字(0到4)+5=原来的数字

代码

# 某个公司采用公用电话传递数据,数据是四位的整数,
# 在传递过程中是加密的,加密规则如下:
# 每位数字都加上5, 然后用和除以10 的余数代替该数字,
# 再将第一位和第四位交换,第二位和第三位交换
# 解析:
# 这道题是把一个四位数字加密后输出一次,然后再把加密的数字还原
# 先把四位数据接受,然后分别获取一至四位数字
# (num+5)%10=加密后的数字,
# 加密后的数字(5到9)-5=原来的数字
# 加密后的数字(0到4)+5=原来的数字
def function(number):
    # 生成器:
    num_list_old = ((number // pow(10, i)) % 10 for i in range(3, -1, -1))  # 个,十,百,千
    # 加密:
    num_list_new = []
    for i in num_list_old:
        num_list_new.append((i + 5) % 10)
    # 解密:
    num_list_new1 = []
    for i in range(0, 4):
        if num_list_new[i] < 5:
            num_list_new1.append(num_list_new[i] + 5)
        elif num_list_new[i] >= 5:
            num_list_new1.append(num_list_new[i] - 5)
    # 把列表里的数组合成一个四位数:
    new_sum, new1_sum = 0, 0
    for k in range(0,4):
        new_sum, new1_sum = new_sum + num_list_new[abs(k-3)] * pow(10, k),\
                            new1_sum+num_list_new1[abs(k-3)] * pow(10, k)

    print('{:0>4d}加密后是:{:0>4},解密后是:{:0>4}'.format(number, str(new_sum), str(new1_sum)))


# 生成1000-9999的数明显是加密后和解密后的数:
for i in range(1000, 9999, 253):
    function(i)

结果

我是你爸爸

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东篱把酒黄昏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值