04-1. 水仙花數(20)


水仙花數是指一個N位正整數(N>=3),它的每個位上的數字的N次冪之和等於它本身。例 如:153 = 13 + 53+ 33。 本題要求編寫程序,計算所有N位水仙花數。

輸入格式:

輸入在一行中給出一個正整數N(3<=N<=7)。

輸出格式:

按遞增順序輸出所有N位水仙花數,每個數字占一行。

輸入樣例:

3

輸出樣例:

153
370
371
407



 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int n;
 6     scanf("%d", &n);
 7     
 8     int i, low = 1, high;           //low表示n位數的最小數,high表示n位數的最大數 
 9     for(i = 1; i < n; i++) {
10         low *= 10;
11     } 
12     high = low * 10; 
13     for(i = low; i < high; i++ ) {        //從最小數到最大數逐一遍歷  
14         int t = i;
15         int sum = 0;
16         do {
17             int r = t % 10;          //r為數的末尾數字  
18             t /= 10;
19             int j, b = r;
20             for(j = 1; j < n; j++) {    //讓r自乘最后得到r的n次方 
21                 r *= b;
22             }
23             sum += r; 
24         } while(t > 0);
25         if(sum == i) {               //讓r的n次方和i比較 
26             printf("%d\n", i);
27         }
28     }
29     
30     return 0;
31 }

 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM