【华为OD】 给你一串未加密的字符串str,通过对字符串的每一个字母进行改变来实现加密

本文介绍了一种基于字母偏移的加密方法,通过数组a的递增规则对字符串每个字符进行位移加密。给定原文字符串和前三项数组元素a[0]=1, a[1]=2, a[2]=4,后续元素根据递推公式a[i]=a[i-1]+a[i-2]+a[i-3]计算。示例中,原文'xy'加密后变为'ya'。该方法适用于处理小写字母组成的字符串,可以应用于数据保护场景。" 123464786,12690007,Java实现简单计算器,"['Java', '算法', '开发语言']
摘要由CSDN通过智能技术生成

给你一串未加密的字符串str,通过对字符串的每一个字母进行改变来实现加密,加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量,数组a前三位已经赋值:a[0]=1,a[1]=2,a[2]=4。当i>=3时,数组元素a[i]=a[i-1]+a[i-2]+a[i-3],
例如:原文 abcde 加密后 bdgkr,其中偏移量分别是1,2,4,7,13。
输入描述:
第一行为一个整数n(1<=n<=1000),表示有n组测试数据,每组数据包含一行,原文str(只含有小写字母,0<长度<=50)。
输出描述:
每组测试数据输出一行,表示字符串的密文
示例1
输入
1
xy
输出
ya

# str1 = 'abcde'
# str1 = 'yz'
def jiami2(str1):
    a = [1,2,4]
    for i in range(3,len(str1)):
        s = a[i - 1] + a[i - 2] + a[i - 3]
        a.append(s)
    print(a)
    pianyi_list = []
    for i in range(len(str1)):
        asc_num = a[i] + (ord(str1[i]) - ord('a'))
        yu = (asc_num)%(26)
        asc_num= 97+yu
        pianyi_list.append(chr(asc_num))
    return "".join(pianyi_list)
if __name__ == "__main__":
    n = int(input())
    s_list = []
    for i in range(n):
        s = input()
        s_list.append(s)
    for s in s_list:
        new_s = jiami2(s)
        print(new_s)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值