本題要求實現一種數字加密方法。首先固定乙個加密用正整數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 的數字,若結果為負數,則再加 ...