Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่าเลขเป็น Mystery Number หรือไม่ ใน C++


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