1048 数字加密

首先,因为输入的正整数的高位放在存储的低位,所以要对正整数进行逆置。

其次,因为给出的两个正整数的位数可能不一致,所以要处理成位数一致再进行运算。

#include<iostream>
#include<algorithm>
using namespace std;

string hashtable = "0123456789JQK";
int main() {
    string str1,str2,str3;
    cin>>str1>>str2;
    reverse(str1.begin(),str1.end());//逆置正整数 
    reverse(str2.begin(),str2.end()); //逆置正整数 
    if(str1.size() > str2.size())
        str2.insert(str2.size(),str1.size() - str2.size(),'0');
    if(str1.size() < str2.size())
        str1.insert(str1.size(),str2.size() - str1.size(),'0');
    for(int i = 0; i < str1.size(); ++i) {
        if(i % 2 == 0)
            str3 += hashtable[(str1[i]-'0'+str2[i]-'0')%13];
        else {
            int t = str2[i]-'0'-(str1[i]-'0');
            str3 += t < 0?t+10+'0':t+'0';
        }
    }
    reverse(str3.begin(),str3.end());//结果逆置 
    cout<<str3;
    return 0;
}

 

posted @ 2020-02-20 09:59  tangq123  阅读(148)  评论(0编辑  收藏  举报