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; }