您的位置:首页 > 其它

PAT乙级1048 数字加密

2017-11-25 15:26 417 查看
这道题要注意输出顺序的问题,另外如果用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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: