列出所有三位數(100~999)中的阿姆斯壯數。阿姆斯壯數定義:三位數 abc 滿足 a³ + b³ + c³ = abc。
因為三位數只有 900 個(100~999),直接遍歷每個數並檢查條件是最高效且簡單的方法。時間複雜度 O(900) ≈ O(1),瞬間完成。
#include <stdio.h>
int main() {
int i, a, b, c;
for (i = 100; i <= 999; i++) {
a = i % 10; // 個位
b = i / 10 % 10; // 十位
c = i / 100; // 百位
if (a*a*a + b*b*b + c*c*c == i) {
printf("%d is Armstrong.\n", i);
}
}
return 0;
}
153 is Armstrong. 370 is Armstrong. 371 is Armstrong. 407 is Armstrong.
| 特性 | 問題七十九 | 問題七十八 |
|---|---|---|
| 輸入 | 單一三位數 | 無輸入 |
| 輸出 | 判斷單一數字 | 列出所有符合數字 |
| 錯誤處理 | 需檢查輸入範圍 | 無需輸入驗證 |
| 適用場景 | 互動式查詢 | 批次列舉 |
900 次迴圈,每次做常數次運算,現代 CPU 微秒級完成。無需優化。若擴展到 n 位數,搜尋空間呈指數增長,需採用回溯或剪枝策略。
這道題目是迴圈與位數操作的經典練習,也是理解「窮舉法」適用邊界的好例子。