PAT乙級1048 數字加密
阿新 • • 發佈:2019-02-08
這道題要注意輸出順序的問題,另外如果用cin輸入,由於A,B之間有空格的原因,A.length()會比實際長度大1
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int reverse(string s,int t[]){
for(int i=0;i<s.length();i++){
t[i]=s[s.length()-i-1]-'0';
}
return 0;
}
int main(){
int len;
string A,B,C="0" ;
int vA[100],vB[100];
char vC[100],sA[100],sB[100];
int num;
cin>>A>>B;
len=A.length()>=B.length()? A.length():B.length();
reverse(A,vA);
reverse(B,vB);
if(A.length()<len){
for(int i=A.length();i<len;i++){
vA[i]=0;
}
}
if (B.length()<len){
for(int i=B.length();i<len;i++){
vB[i]=0;
}
}
for(int i=len-1;i>=0;i--){
if((i+1)%2==1){
num=(vA[i]+vB[i])%13;
if(num==10){
vC[i]='J';
}else if(num==11){
vC[i]='Q';
}else if(num==12){
vC[i]='K';
}else{
vC[i]=num+'0';
}
}else{
num=vB[i]-vA[i];
if(num<0){
num+=10;
}
vC[i]=num+'0';
}
cout<<vC[i];
}
return 0;
}