1048 數字加密

2021-07-10 03:31:16 字數 1159 閱讀 3132

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

輸入格式:

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

輸出格式:

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

輸入樣例:

1234567 368782971
輸出樣例:
3695q8118
演算法:

演算法開始。

用兩個字串儲存a和b。

用兩個字元指標分別指向a和b末尾。第三個字元指標指向空間與b一樣大的字元位址。

如果是奇數字,字元指標指向的字元都減去『0』,相加除以13取餘,如果小於10,加上『0』,如果大於9,用j代表10,q代表11,k代表12,儲存於第三個字元指標中。

如果是偶數字,第二個字元指標指向的字元減去第乙個,如果結果是負數,則再加上10,儲存於第三個字元指標中。

如果兩個字元指標都大於指向a和b開頭,則三個字元指標都減一。回到第四步。

如果第二個指標不等於b開頭,則*(--第三個指標)=*(--第二個指標)。直到第二個指標等於b開頭。

輸出第三個字串。

演算法結束。

時間複雜度:o(n),空間複雜度o(1)。注意,如果a長度大於b的話,輸出的密文長度要等於a,而且a長度大於b的部分b該位上當作為0。修改scanf_s函式就可以在pat上ac。

#include #include #include #define n 101

int main(void)

else

}} else

ptr3[k] = '0' + temp;

} count++;

} while (k > 0);

puts(ptr3);

free(ptr1);

free(ptr2);

free(ptr3);

return 0;

}

1048 數字加密

本題要求實現一種數字加密方法。首先固定乙個加密用正整數 a,對任一正整數 b,將其每 1 位數字與 a 的對應位置上的數字進行以下運算 對奇數字,對應位的數字相加後對 13 取餘 這裡用 j 代表 10 q 代表 11 k 代表 12 對偶數字,用 b 的數字減去 a 的數字,若結果為負數,則再加 ...

1048 數字加密

本題要求實現一種數字加密方法。首先固定乙個加密用正整數 a,對任一正整數 b,將其每 1 位數字與 a 的對應位置上的數字進行以下運算 對奇數字,對應位的數字相加後對 13 取餘 這裡用 j 代表 10 q 代表 11 k 代表 12 對偶數字,用 b 的數字減去 a 的數字,若結果為負數,則再加 ...

1048 數字加密

本題要求實現一種數字加密方法。首先固定乙個加密用正整數 a,對任一正整數 b,將其每 1 位數字與 a 的對應位置上的數字進行以下運算 對奇數字,對應位的數字相加後對 13 取餘 這裡用 j 代表 10 q 代表 11 k 代表 12 對偶數字,用 b 的數字減去 a 的數字,若結果為負數,則再加 ...