题目描述
对一个十进制的四位数来说,我们用以下规则将它加密成另一个四位数:
- 首先,将个位和千位对调;
- 然后,将十位和百位对调;
- 最后将每一位数字进行替换操作。替换规则为:00 替换成 99、11 替换成 88、22 替换成 77、33 替换成 66,99 替换成 00,其他数字以此类推。
例如,对 8429
加密,则
- 个位和千位对调后得
9428
; - 十位和百位对调后得
9248
; - 将每个数字替换后得
0751
。
现在给定一个已经被加密过的四位数(称之为密文),请解密出原本的数字(称之为明文)。
输入格式
单个整数,表示给定的密文,保证输入的密文有且仅有四个数字。
输出格式
单个整数,表示对应的明文。
样例数据
输入:0751 输出:8429
输入:1123 输出:6788
代码实现
#include <bits/stdc++.h>
using namespace std;
int a, b, c, d, m, t;
int main() {
cin >> m;
d = m % 10;
c = m / 10 % 10;
b = m / 100 % 10;
a = m / 1000;
t = a;
a = d;
d = t;
t = b;
b = c;
c = t;
if (a == 1) {
a = 8;
} else if (a == 0) {
a = 9;
} else if (a == 2) {
a = 7;
} else if (a == 3) {
a = 6;
} else if (a == 4) {
a = 5;
} else if (a == 5) {
a = 4;
} else if (a == 6) {
a = 3;
} else if (a == 7) {
a = 2;
} else if (a == 8) {
a = 1;
} else if (a == 9) {
a = 0;
}
if (b == 1) {
b = 8;
} else if (b == 0) {
b = 9;
} else if (b == 2) {
b = 7;
} else if (b == 3) {
b = 6;
} else if (b == 4) {
b = 5;
} else if (b == 5) {
b = 4;
} else if (b == 6) {
b = 3;
} else if (b == 7) {
b = 2;
} else if (b == 8) {
b = 1;
} else if (a == 9) {
b = 0;
}
if (c == 1) {
c = 8;
} else if (c == 0) {
c = 9;
} else if (c == 2) {
c = 7;
} else if (c == 3) {
c = 6;
} else if (c == 4) {
c = 5;
} else if (c == 5) {
c = 4;
} else if (c == 6) {
c = 3;
} else if (c == 7) {
c = 2;
} else if (c == 8) {
c = 1;
} else if (c == 9) {
c = 0;
}
if (d == 1) {
d = 8;
} else if (d == 0) {
d = 9;
} else if (d == 2) {
d = 7;
} else if (d == 3) {
d = 6;
} else if (d == 4) {
d = 5;
} else if (d == 5) {
d = 4;
} else if (d == 6) {
d = 3;
} else if (d == 7) {
d = 2;
} else if (d == 8) {
d = 1;
} else if (d == 9) {
d = 0;
}
cout << a << b << c << d;
return 0;
}