本帖最後由 buy 於 2010-10-16 11:58 編輯
內容 : 正體->简体
所謂 Armstrong number 指的是一個 n 位數的整數,它的所有位數的 n 次方和恰好等於自己。
如;1634 = 14 + 64 + 34+ 44
請依題目需求在一定範圍內找出該範圍內的所有 armstrong numbers.
輸入說明 :
輸入包含兩個數字n, m(n<m, n>0, m<=1000000),代表所有尋找 armstrong number 的範圍
輸出說明 :
將所有範圍內的 armstrong number 依序由小到大輸出,如果沒有找到請輸出 none.
範例輸入 :
100 999 10 99
範例輸出 :
153 370 371 407 none
------------------------------------------------------------------------------------------
1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084, 548834, 1741725, 4210818, 9800817, 9926315, 24678050, 24678051, 88593477, 146511208, 472335975, 534494836, 912985153, 4679307774, 32164049650, 32164049651
1.先找出左邊界
2. 找出右邊界
3. 將界限內的 armstrong number 印出來
--------------------------------------------------------------- long Value[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370,
- 371, 407, 1634, 8208, 9474, 54748, 92727,
- 93084, 548834, 1741725, 4210818, 9800817, 9926315,
- 24678050, 24678051, 88593477, 146511208, 472335975 };
- long a,b;
- int Lower,Upper;
- while( cin >> a >> b )
- {
- ...
- //判斷Upper,Lower
- if(Upper < Lower)
- {
- cout << "none" << endl;
- }
- else
- {
- for (i =Lower ; i<= Upper ; i++)
- {
- cout << Value[i] << " ";
- }
- cout << endl;
- }
- }
複製代碼 |