1. 程式人生 > >Problem 1 水仙花數

Problem 1 水仙花數

簡要題意:

輸出所有在m和n範圍內的水仙花數。

解題思路:

現將定義域內(100<=m<=n<=999)所有數存入陣列中,如果為水仙花數,則該位置即為該水仙花數,否則賦值為0。輸入給定範圍區間,判斷區間內陣列的每個數值是否為0,若全部為0則輸出no,否則輸出對應不為0的水仙花數。

細節處理:

  1. 在主函式前定義陣列,陣列直接預設初始化,不需再在後面單獨賦值0。
  2. 輸出時,注意空格的輸出(最後一個數輸出後沒有空格)。

原始碼: 

#include<iostream>
using namespace std;
int f[1010], g[1010];
int main()
{
    int m, n, a, b, c;
    for(int i=100;i<=1010;i++)
    {
        a=i/100;
        b=(i-a*100)/10;
        c=(i-a*100-b*10);
        if(i==a*a*a+b*b*b+c*c*c) f[i]=i;
    }
    while(cin>>m>>n)
    {
        int d=0;
        for(int i=m;i<=n;i++)
        {
            if(f[i]!=0) g[d++]=f[i];
        }
        if(d==0) cout<<"no"<<endl;  
        else
        {
            for(int i=0;i<d-1;i++)
                cout<<g[i]<<" ";
            cout<<g[d-1]<<endl;
        }
    }
    return 0;
}