题目链接:1048 数字加密
注意
这题思路并不复杂,比较坑的地方是如果原串没有密钥长,需要补位至一致位数。输出时不用管高位如果是0的问题。过程我都写在代码批注里了。
代码
#include <iostream>
using namespace std
;
int main(){
char c
[13] = {'0','1','2','3','4','5','6','7','8','9','J','Q','K'};
string s1
,s2
,s3
;
cin
>> s1
>> s2
;
for(int i
=1;i
<=s2
.length()||i
<=s1
.length();i
++){
int a
= 0,b
= s2
[s2
.length()-i
] - '0';
if(i
>s2
.length()) b
= 0;
if(i
>s1
.length()) a
= b
;
else if(i
% 2) a
= (b
+ s1
[s1
.length()-i
] - '0') % 13;
else a
= b
- s1
[s1
.length()-i
] + '0';
s3
.insert(0,1,c
[a
<0?a
+10:a
]);
}
cout
<< s3
<< endl
;
return 0;
}
转载请注明原文地址:https://blackberry.8miu.com/read-14346.html