PAT Basic 1048. 數字加密(20)(C語言實現)

我的PAT系列文章更新重心已移至Github,歡迎來看PAT題解的小伙伴請到Github Pages瀏覽最新內容。此處文章目前已更新至與Github Pages同步。歡迎star我的repo

題目

本題要求實現一種數字加密方法。首先固定一個加密用正整數 A,對任一正整數 B,將其每 1 位數字與 A
的對應位置上的數字進行以下運算:對奇數位,對應位的數字相加后對 13 取余——這里用 J 代表 10、Q 代表 11、K 代表 12;對偶數位,用 B
的數字減去 A 的數字,若結果為負數,則再加 10。這里令個位為第 1 位。

輸入格式:

輸入在一行中依次給出 A 和 B,均為不超過 100 位的正整數,其間以空格分隔。

輸出格式:

在一行中輸出加密后的結果。

輸入樣例:

1234567 368782971

輸出樣例:

3695Q8118

思路

要注意位數不足的話在前面補0。

代碼

最新代碼@github,歡迎交流

#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;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容