字符串加密

标题:字符串加密 | 时间限制:2秒 | 内存限制:65536K | 语言限制:不限
给你一串未加密的字符串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。

def jiami():
    n = int(input().strip())
    code = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
    list = []
    panyi=[1,2,4]+[0]*48
    for i in range(3,50):
        panyi[i]=panyi[i-1]+panyi[i-2]+panyi[i-3]
    for _ in range(n):
        data = input().strip()
        list.append(data)
    for i in range(n):
        res=''
        for j in range(len(list[i])):
            f=panyi[j]%26
            res+=code[code.index(list[i][j])+f]
        print(res)

jiami()
#include <iostream>
#include <string>
using namespace std;
string cal(string s){
	long long arr[50] = { 1,2,4 };
	char str[51] = { 0 };
	for (int i = 3; i < s.size(); i++){
		arr[i] = arr[i - 1] + arr[i - 2] + arr[i - 3];
	}
	for (int i = 0; i < s.size(); ++i){
		str[i]= (s[i] + arr[i] % 26) > 'z' ? (s[i] + arr[i] % 26 - 'z' + 'a' -1 ) : (s[i] + arr[i] % 26);
	}
	string res(str);
	return res;
}
int main(){
	int cnt = 0;
	cin >> cnt;
	for (int i = 0; i < cnt; i++)
	{
		string s;
		cin >> s;
		cout << cal(s) << endl;
	}
	return 0;
}



全部评论

相关推荐

吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务