信息安全很重要,特别是密码。给定一个5位的正整数n和一个长度为5的字母构成的字符串s,加密规则很简单,字符串s的每个字符变为它后面的第k个字符,其中k是n的每一个数位上的数字。第一个字符对应n的万位上的数字,最后一个字符对应n的个位上的数字。简单起见,s中的每个字符为ABCDE中的一个。 输入格式: 测试数据有多组,处理到文件尾。每组测试数据在一行上输入非负的整数n和字符串s。 输出格式: 对于每组测试数据,在一行上输出加密后的字符串。 输入样例: 12345 ABCDE 输出样例: BDFHJ 写出对应c语言代码
时间: 2023-05-26 16:03:15 浏览: 153
#include <stdio.h>
#include <string.h>
int main() {
int n;
char s[6];
while (scanf("%d %s", &n, s) != EOF) {
int len = strlen(s);
for (int i = 0; i < len; i++) {
int k = n % 10; // 取出最后一位数字
if (s[i] + k <= 'E') { // 如果加上k不超过'E',直接加上k
s[i] += k;
} else { // 否则从'A'开始加
s[i] = 'A' + (s[i] + k - 'F' - 1);
}
n /= 10; // n去掉最后一位数字
}
printf("%s\n", s);
}
return 0;
}
相关问题
信息安全很重要,特别是密码。给定一个5位的正整数n和一个长度为5的字母构成的字符串s,加密规则很简单,字符串s的每个字符变为它后面的第k个字符,其中k是n的每一个数位上的数字。第一个字符对应n的万位上
的数字,第二个字符对应n的千位上的数字,以此类推,直到最后一个字符对应n的个位上的数字。具体地,如果一个字符是字母表的第i个字母,那么它加密后的字符就是字母表的第(i+k) % 26个字母。这里%表示模运算,也就是取余数。
例如,假设n是12345,s是"abcde",那么它的加密结果就是"cfhik"。解释如下:1对应数字k为1,所以s的第一个字符a要变成它后面的第1个字符,也就是b;2对应数字k为2,所以s的第二个字符b要变成它后面的第2个字符,也就是d;以此类推,直到s的最后一个字符e要变成它后面的第5个字符,也就是k。
由于信息安全非常重要,为了保护你的密码,请勿在公共场合泄露你的密码,尤其是不要在网络上公开发布。
阅读全文