字符串加密
标题:字符串加密 | 时间限制: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; }