習題4-6 水仙花數(20 分)


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

輸入格式:

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

輸出格式:

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

輸入樣例:

3

輸出樣例:

153
370
371
407
#include <stdio.h>
 
 int main()
 {
     int n;
     scanf("%d", &n);
     
     int i, low = 1, high;           //low表示n位數的最小數,high表示n位數的最大數 
     for(i = 1; i < n; i++) 
     {
         low *= 10;
     } 
     high = low * 10; 
     for(i = low; i < high; i++ )
      {        //從最小數到最大數逐一遍歷  
         int t = i;
         int sum = 0;
         do {
             int r = t % 10;          //r為數的末尾數字  
             t /= 10;
             int j, b = r;
             for(j = 1; j < n; j++)
              {    //讓r自乘最后得到r的n次方 
                 r *= b;
              }
             sum += r; 
         } while(t > 0);
         if(sum == i)
          {               //讓r的n次方和i比較 
             printf("%d\n", i);
          }
     }
     return 0;
 }

 


免責聲明!

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



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