輸入一個 5 位整數,判斷是否為迴文數(個位=萬位,十位=千位)。
#include <stdio.h>
int main(void) {
int num;
do {
printf("請輸入 5 位整數 (10000~99999):");
scanf("%d", &num);
if (num < 10000) puts("太小,請重新輸入");
else if (num > 99999) puts("太大,請重新輸入");
} while (num < 10000 || num > 99999);
int d1 = num / 10000; // 萬位
int d2 = num / 1000 % 10; // 千位
int d4 = num % 100 / 10; // 十位
int d5 = num % 10; // 個位
if (d1 == d5 && d2 == d4)
puts("Yes, 它是迴文數!");
else
puts("No, 它不是迴文數。");
return 0;
}
bool is_palindrome(int n) {
if (n < 0) return false;
int original = n, reversed = 0;
while (n > 0) {
reversed = reversed * 10 + n % 10;
n /= 10;
}
return original == reversed;
}
bool is_palindrome_str(const char *s) {
int len = strlen(s);
for (int i = 0; i < len / 2; ++i)
if (s[i] != s[len - 1 - i]) return false;
return true;
}

| 方法 | 時間 | 空間 | 適用範圍 |
|---|---|---|---|
| 位元數學 | O(log₁₀ n) | O(1) | int/long long 範圍內 |
| 字串反轉 | O(d) | O(d) | 任意長度、大整數 |