PTA B1048 數字加密。c

2021-10-03 13:48:09 字數 1092 閱讀 6741

b1048 數字加密

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

輸入格式:

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

輸出格式:

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

sample input:

1234567 368782971

sample output:

3695q8118

思路:為了方便按位處理,對於兩個整數a\b,採用字串的方式讀入

由於讀入的時候最高位在陣列的0號位,且題目要求從最低位開始處理且最低位為第一位,所以需要在讀入後再把陣列重新按照低位在陣列低位的方式進行反轉,並且從第一位開始

最終需要處理和輸出的字元長度是兩個數字中位數最長的那乙個

需要注意的是,由於從1號位開始,所以判斷乙個數是否處理完畢的條件是》count。

最後輸出的時候也要進行反轉輸出,先輸出數字的高位。

#include

#include

#include

using

namespace std;

intmain()

for(

int i=lenthb;i>=

0;i--

) counta--

; countb--

;int len=

max(counta,countb)

;//兩個中大的那個是長度

for(

int i=

1;i<=len;i++

)//從個位開始

if(i%2==

0)//偶數

}//從高位輸出

for(

int i=len;i>

0;i--

) cout<;return0;

}

1048 數字加密

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

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 的數字,若結果為負數,則再加 ...