Mystery Number = จำนวนที่เป็นผลรวมของสองจำนวนที่เป็นตัวเลขกลับกัน (reverse)
ตัวอย่าง: 121 = 29 + 92 (29 และ 92 เป็นตัวเลขกลับกัน)
วิธี: วน i = 1 ถึง n/2 หาจำนวนกลับของ i ถ้า i + reverse(i) = n → เป็น Mystery Number
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int revNum(int str) {
string s = to_string(str);
reverse(s.begin(), s.end());
stringstream ss(s);
int rev = 0; ss >> rev;
return rev;
}
bool isMysteryNumber(int n) {
for (int i = 1; i <= n/2; i++) {
int j = revNum(i);
if (i + j == n) { cout << i << " " << j; return true; }
}
return false;
}
int main() {
int num = 121;
if (isMysteryNumber(num)) cout << "\n" << num << " is a Mystery number";
else cout << " is not a Mystery number";
}
ผลลัพธ์
29 92 121 is a Mystery number