本題要求實現一種數字加密方法。首先固定一個加密用正整數A,對任一正整數B,將其每1位數字與A的對應位置上的數字進行以下運算:對奇數位,對應位的數字相加後對13取餘——這裏用J代表10、Q代表11、K代表12;對偶數位,用B的數字減去A的數字,若結果爲負數,則再加10。這裏令個位爲第1位。
輸入格式:
輸入在一行中依次給出A和B,均爲不超過100位的正整數,其間以空格分隔。
輸出格式:
在一行中輸出加密後的結果。
輸入樣例:1234567 368782971輸出樣例:
3695Q8118
#include <stdio.h> #include <string.h> int main() { char A[101], B[101]; char encrypt[] = "0123456789JQK"; scanf("%s %s", A, B); int lenA = strlen(A); int lenB = strlen(B); int maxlen = lenA > lenB ? lenA : lenB; int a, b; for(int i = 0; i < maxlen; i++) { a = lenA + i - maxlen < 0 ? 0 : A[lenA + i - maxlen] - '0'; b = lenB + i - maxlen < 0 ? 0 : B[lenB + i - maxlen] - '0'; if((maxlen - i) % 2) putchar(encrypt[(a + b) % 13]); else putchar('0' + (b - a < 0 ? b - a + 10 : b - a)); } return 0; }