做淘宝客网站要注意什么,公司管理系统名称大全,公司电商网站建设,网站地址正能量题目
本题要求实现一种数字加密方法。首先固定一个加密用正整数 A#xff0c;对任一正整数 B#xff0c;将其每 1 位数字与 A 的对应位置上的数字进行以下运算#xff1a;对奇数位#xff0c;对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12对任一正整数 B将其每 1 位数字与 A 的对应位置上的数字进行以下运算对奇数位对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12对偶数位用 B 的数字减去 A 的数字若结果为负数则再加 10。这里令个位为第 1 位。
输入格式
输入在一行中依次给出 A 和 B均为不超过 100 位的正整数其间以空格分隔。
输出格式
在一行中输出加密后的结果。
输入样例
1234567 368782971输出样例
3695Q8118分析
输入格式已经给出了要求AB的大部分测试用例都在int和long long外所以AB只能用字符串或者字符数组来存储。A和B的位数存在不相等的时候所以要用0来补高位考虑正向不好补可以逆序后再加0。所以先求出两个数的位数并把较大的用max存下来并新建两个数组长度为max1方便判断奇偶初始化为 ‘0’ 将A和B分别逆序存。然后按照题目规则计算各位结果用一个字符串累加结果最后逆序输出即可。
AC代码
#includeiostream
#includestring
using namespace std;
int main(int argc, char** argv)
{int i,len1,len2,max;string m,n,ans;cinmn;len1m.length();len2n.length();maxlen1len2?len1:len2;char ch1[max1],ch2[max1];for(i1; imax1; i){ch1[i]0;ch2[i]0;}for(i1; imax1; i){if(ilen1)ch1[i]m[len1-i];if(ilen2)ch2[i]n[len2-i];}for(i1; imax1; i){if(i%2!0){int t(ch1[i]-0ch2[i]-0)%13;if(t10)ansJ;else if(t11)ansQ;else if(t12)ansK;elseansto_string(t);}else{int tch2[i]-ch1[i];if(t0)t10;ansto_string(t);}}for(imax-1; i0; i--){coutans[i];}return 0;
}如果您有任何问题或其他解法欢迎评论区留言o
更多题解 pat 乙级(Basic Level) 题解汇总持续更新C