南陽理工學院ACM語言入門題目39水仙花數的思考與程式碼
阿新 • • 發佈:2019-01-23
水仙花數
時間限制: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;
從題意中獲取內容