1. 程式人生 > >PAT乙級1048 數字加密

PAT乙級1048 數字加密

這道題要注意輸出順序的問題,另外如果用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; }