PAT-B 1048 數字加密【字串】
PAT-B 1048 數字加密
https://pintia.cn/problem-sets/994805260223102976/problems/994805276438282240
題目
本題要求實現一種數字加密方法。首先固定一個加密用正整數 A,對任一正整數 B,將其每 1 位數字與 A 的對應位置上的數字進行以下運算:對奇數位,對應位的數字相加後對 13 取餘——這裡用 J 代表 10、Q 代表 11、K 代表 12;對偶數位,用 B 的數字減去 A 的數字,若結果為負數,則再加 10。這裡令個位為第 1 位。
輸入
輸入在一行中依次給出 A 和 B,均為不超過 100 位的正整數,其間以空格分隔。
輸出
在一行中輸出加密後的結果。
樣例輸入
1234567 368782971
樣例輸出
3695Q8118
分析
簡單字串處理,但是要注意,短字串要補零成長度相同的字串,具體看程式。
C++程式
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
char a[]={'0','1','2','3','4','5','6','7','8','9','J','Q','K'};
int main()
{
string A,B,C;
cin>>A>>B;
reverse(A.begin(),A.end());//反轉
reverse(B.begin(),B.end());//反轉
C=(A.length()>B.length())?A:B;
int len=max(A.length(),B.length());
for(int i=0;i<len;i++)
{
char c1=i<A.length()?A[i]:'0';
char c2=i<B.length()?B[i]:'0';
if(i%2==0)//奇數位(題目中個位編號為 1)
{
int tmp=(c1-'0'+c2-'0')%13;
C[i]=a[tmp];
}
else//偶數位
{
int tmp=c2-c1;
if(tmp<0) tmp+=10;
C[i]=tmp+'0';
}
}
reverse(C.begin(),C.end());
cout<<C<<endl;
return 0;
}
相關文章
- 【PAT乙級】1048 數字加密加密
- 1048 數字加密(字首和思想)加密
- PAT1048數字加密(java實現)加密Java
- 數字加密加密
- Awk 字串連線操作(字串轉數字,數字轉字串)字串
- PAT-B 1079 延遲的迴文數【字串+大數加法】字串
- PAT-B 1024 科學計數法【模擬+字串】字串
- C++/C:數字轉成字串, 字串轉成數字C++字串
- 數字與字串5.5字串
- PHP字串數字相加PHP字串
- 字串分割 提取數字字串
- PAT-B 1019 數字黑洞【陣列+模擬】陣列
- 加密與數字簽名加密
- PAT-B 1078 字串壓縮與解壓【字串】字串
- PAT-B 1002 寫出這個數 【字串+遞迴列印】字串遞迴
- mysql 字串和數字比,字串會隱式轉換為數字0MySql字串
- 數字格式字串轉數字保留後面0字串
- 字串或數字反轉字串
- JavaScript字串轉換數字JavaScript字串
- Golang字串解析成數字Golang字串
- 字串型別數字order by字串型別
- 從字串中提取數字字串
- 將字串轉為數字字串
- PAT-B 1093 字串A+B 【集合】字串
- PAT-B 1029 舊鍵盤【字串】字串
- Android 安全加密:數字簽名和數字證書Android加密
- Android安全加密:數字簽名和數字證書Android加密
- java從字串中提取數字Java字串
- JavaScript 字串轉數字:陷阱(示例)JavaScript字串
- 巧取字串中的數字字串
- 字串轉數字的問題字串
- PAT-B 1031 查驗身份證 【字串】字串
- PAT-B 1033 舊鍵盤打字【字串】字串
- PAT-B 1009 說反話【字串】字串
- 統計字串中數字個數,並將數字字串形式輸出字串
- 深入理解加密、解密、數字簽名和數字證書加密解密
- 安全基礎:數字信封、數字簽名、數字證書(加簽驗籤,加密解密)加密解密
- JavaScript輸入字串字數倒計JavaScript字串