1048. 数字加密(20)
2017-04-08 10:37
197 查看
本题要求:
本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。输入格式:
输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。输出格式:
在一行中输出加密后的结果。输入样例:
1234567 368782971输出样例:
3695Q8118解题思路 :
特别注意,要在短的字符串前面补0。代码 :
#include <iostream> #include <string> using namespace std; int m = 1; char getN(int a, int b) { int n; if (m & 1) { n = (a + b) % 13; } else { n = b - a; if (n < 0) { n += 10; } } if (n < 10) { return n + '0'; } else { switch(n) { case 10: return 'J'; case 11: return 'Q'; case 12: return 'K'; } } return '0'; } int main() { string a, b; char c[101]; cin >> a >> b; int aL = a.length(); int bL = b.length(); while (aL < bL) { a.insert(0, "0"); aL++; } while (bL < aL) { b.insert(0, "0"); bL++; } int i = aL - 1; int j = bL - 1; c[bL] = '\0'; while (i >= 0 && j >= 0) { c[j] = getN(a[i] - '0', b[j] - '0'); m++; i--; j--; } cout << c; return 0; }
相关文章推荐
- PAT(basic level) 1048 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)(C++)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- PAT乙级1048. 数字加密(20)
- PAT(B) - 1048. 数字加密(20)
- PAT 1048. 数字加密(20)
- PAT-1048 数字加密20
- 1048. 数字加密(20)
- PAT 1048. 数字加密(20)
- PAT乙级 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- PAT1048 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- PAT 乙级 1048. 数字加密(20)
- 1048. 数字加密(20)