1. 程式人生 > >南陽理工學院ACM語言入門題目39水仙花數的思考與程式碼

南陽理工學院ACM語言入門題目39水仙花數的思考與程式碼

水仙花數

時間限制:1000 ms  |  記憶體限制:65535 KB 難度:0
描述
請判斷一個數是不是水仙花數。
其中水仙花數定義各個位數立方和等於它本身的三位數。
輸入
有多組測試資料,每組測試資料以包含一個整數n(100<=n<1000)
輸入0表示程式輸入結束。
輸出
如果n是水仙花數就輸出Yes
否則輸出No
樣例輸入
153
154
0
樣例輸出
Yes
No
來源
上傳者

張雲聰

我的思考:確定語言

                 理解水仙花數,如何分離出個位,十位,百位

                 多組測試資料

                 n的範圍需要寫嗎?

                 輸入0測試結束

                 如果 否則   if語句

我的程式:

#include<stdio.h>
int main(){
int a, b, c, n;           //定義變數:個位,十位,百位,一個數
while(scanf("%d",&n)!=EOF&&n!=0){        //輸入n和輸入0表示程式結束
            a = n % 10;        //個位上數字
b = n / 10 % 10;       //十位上數字
c = n / 100;    //百位上數字
if(n == (a * a * a + b * b * b + c * c * c))   //判斷水仙花數的條件
printf("Yes\n");
else
printf("No\n");

}
return 0;
}


最優程式:

01.#include<iostream> 02.using namespace std; 03.int main() 04.{ 05.int a; 06.while(1) 07.{ 08.cin>>a; 09.if(a==0) break; 10.cout<<((a==153||a==370||a==371||a==407)?"Yes":"No")<<endl; 11.} 12.}

執行時間和記憶體一樣為0和240;

從題意中獲取內容