1048 数字加密
注意点
-
高位的0要舍去
-
所有位都是0的情况输出一个0
代码
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
char a[101];
char b[101];
int main(){
string s1,s2;
int tmp;
cin>>s1>>s2;
for(int i=0;s1[i]!=NULL;i++){
a[i+1]=s1[s1.length()-i-1];//1~s1.lenghth
}
for(int i=0;s2[i]!=NULL;i++){
b[i+1]=s2[s2.length()-i-1];//1~s2.length
}
if(s1.length()>=s2.length()){
for(int i=s2.length()+1;i<=s1.length();i++){
b[i]='0';
}
}
for(int i=1;i<=s1.length();i++){
if(i%2==1){//奇数
tmp=(b[i]-'0'+a[i]-'0')%13;
if(tmp<10){
b[i]=tmp+'0';
}
else{
if(tmp==10){
b[i]='J';
}
if(tmp==11){
b[i]='Q';
}
if(tmp==12){
b[i]='K';
}
}
}
else{
tmp=b[i]-a[i];
if(tmp<0){
b[i]=tmp+10+'0';
}
else{
b[i]=tmp+'0';
}
}
}
int f=0;
int max_len;
if(s1.length()>=s2.length()){
max_len=s1.length();
}
else{
max_len=s2.length();
}
for(int i=max_len;i>=1;i--){
if(b[i]!='0'){
f=1;
}
if(f==1){
cout<<b[i];
}
else if(f==0){
continue;
}
}
if(f==0){
cout<<0;
}
return 0;
}

浙公网安备 33010602011771号