Mystery Number – Số N = a + b, trong đó b là số đảo ngược của a (ví dụ: 121 = 29 + 92).
Thuật toán
- Duyệt a từ 1 đến N/2.
- Tính reverse(a).
- Nếu a + reverse(a) = N → tìm thấy.
Chương trình C++
#include <bits/stdc++.h>
using namespace std;
int reverseNum(int n) {
int rev = 0;
while (n > 0) {
rev = rev * 10 + n % 10;
n /= 10;
}
return rev;
}
bool isMystery(int n) {
for (int a = 1; a <= n/2; a++) {
int b = reverseNum(a);
if (a + b == n) {
cout << n << " = " << a << " + " << b << "\n";
return true;
}
}
return false;
}
int main() {
vector test = {121, 22, 33, 101, 100};
for (int n : test) {
if (!isMystery(n)) cout << n << " khong phai Mystery Number\n";
}
return 0;
}
Kết quả
121 = 29 + 92 22 = 11 + 11 33 = 12 + 21 101 khong phai Mystery Number 100 khong phai Mystery Number