PAT乙级(Basic Level)1048(C++)
2016-08-26 09:12
495 查看
1048. 数字加密(20)
本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。
输入格式:
输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。
输出格式:
在一行中输出加密后的结果。
输入样例:
输出样例:
本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。
输入格式:
输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。
输出格式:
在一行中输出加密后的结果。
输入样例:
1234567 368782971
输出样例:
3695Q8118
<pre name="code" class="cpp">#include<iostream> #include<string> #include<cmath> using namespace std; int main() { string A, B, C; cin >> A >> B; int z = A.size() - B.size(); string zeros(abs(z), '0'); if (A.size() > B.size())//a比b长 { B = zeros + B; } if (B.size() > A.size())//b比a长 { A = zeros + A; } for (int i = B.size() - 1,j=1; i >= 0; --i,++j) { int b = B[i] - '0', a = A[i] - '0',c; char ch; if (j % 2 == 1) { c = (a + b) % 13; switch (c) { case 10: ch = 'J'; break; case 11: ch = 'Q'; break; case 12: ch = 'K'; break; default: ch = '0' + c; break; } } else { c = b - a; if (c < 0) { c += 10; } ch = '0' + c; } C = ch + C; } cout << C << endl; system("pause"); return 0; }
相关文章推荐
- PAT乙级(Basic Level)1018(C++)
- PAT乙级(Basic Level)1038(C++)
- PAT乙级(Basic Level)1050(C++)
- PAT乙级(Basic Level)1039(C++)
- PAT乙级(Basic Level)1027(C++)
- PAT乙级(Basic Level)1010(C++)
- PAT乙级(Basic Level)1011(C++)
- PAT乙级(Basic Level)1031(C++)
- PAT乙级(Basic Level)1022(C++)
- PAT乙级(Basic Level)1047(C++)
- PAT乙级(Basic Level)1002(C++)
- PAT乙级(Basic Level)1032(C++)
- PAT乙级(Basic Level)1029(C++)
- PAT乙级(Basic Level)1012(C++)
- PAT乙级(Basic Level)1026(C++)
- PAT乙级(Basic Level)1041(C++)
- PAT乙级(Basic Level)1004(C++/Java)
- 【C++】浙大PAT (Basic Level)1014. 福尔摩斯的约会 (20)
- 【PAT 乙级(Basic Level)】分A+B
- 【C++】浙大PAT (Basic Level)1013. 数素数 (20)