1. Phương pháp đảo ngược số
Phương pháp này tạo ra một số đảo ngược của số ban đầu và so sánh nó với số ban đầu. Nếu hai số bằng nhau, số ban đầu là một số đối xứng.
C++
#include <iostream> using namespace std; bool laSoDoiXung(int n) { int dao = 0; int tam = n; while (tam > 0) { dao = dao * 10 + tam % 10; tam /= 10; } return n == dao; } int main() { int n; cout << "Nhap so nguyen: "; cin >> n; if (laSoDoiXung(n)) { cout << n << " la so doi xung." << endl; } else { cout << n << " khong phai la so doi xung." << endl; } return 0; }
2. Phương pháp so sánh từng chữ số
Phương pháp này so sánh từng chữ số từ đầu và cuối của số. Nếu tất cả các cặp chữ số tương ứng bằng nhau, số đó là số đối xứng.
C++
#include <iostream> #include <string> using namespace std; bool laSoDoiXung(int n) { string s = to_string(n); int len = s.length(); for (int i = 0; i < len / 2; i++) { if (s[i] != s[len - i - 1]) { return false; } } return true; } int main() { int n; cout << "Nhap so nguyen: "; cin >> n; if (laSoDoiXung(n)) { cout << n << " la so doi xung." << endl; } else { cout << n << " khong phai la so doi xung." << endl; } return 0; }
3. Phương pháp đệ quy
Phương pháp này sử dụng đệ quy để so sánh từng chữ số từ đầu và cuối của số.
C++
#include <iostream> #include <string> using namespace std; bool laSoDoiXung(string s, int dau, int cuoi) { if (dau >= cuoi) { return true; } if (s[dau] != s[cuoi]) { return false; } return laSoDoiXung(s, dau + 1, cuoi - 1); } bool laSoDoiXung(int n) { string s = to_string(n); return laSoDoiXung(s, 0, s.length() - 1); } int main() { int n; cout << "Nhap so nguyen: "; cin >> n; if (laSoDoiXung(n)) { cout << n << " la so doi xung." << endl; } else { cout << n << " khong phai la so doi xung." << endl; } return 0; }