PAT(basic level) 1048 数字加密(20)

来源:互联网 发布:js设置data属性值 编辑:程序博客网 时间:2024/05/16 11:41

本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。

输入格式:

输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。

输出格式:

在一行中输出加密后的结果。

输入样例:
1234567 368782971
输出样例:
3695Q8118


#include <iostream>using namespace std;int main(){string a, b;cin >> a >> b;int la = a.size();int lb = b.size();int l; //在较短的字符串前加'0',使a,b长度相等 if(la < lb){l = lb;for(int i = 0; i < lb-la; i ++)a = "0" + a;}else if(la > lb){l = la;for(int i = 0; i < la-lb; i ++)b = "0" + b;} else l = la;int flag;   //判断(第一位)奇偶 if(l % 2 == 0) flag = 0; else flag = 1; string s = "";for(int i = 0; i < l; i ++){if(flag == 1){int num = ((a[i]-'0') + (b[i]-'0')) % 13;if(num < 10) s += (num+'0');else if(num == 10) s += "J";else if(num == 11) s += "Q";else s += "K";flag = 0;   //下一位变换奇偶 }else{int num = ((b[i]-'0') - (a[i]-'0'));if(num < 0) s += (num+10+'0');else s += (num+'0');flag = 1;    //下一位变换奇偶}}cout << s;return 0;} 



0 0