1. 程式人生 > >ZZULIOJ.1096: 水仙花數(函式專題)

ZZULIOJ.1096: 水仙花數(函式專題)

1096: 水仙花數(函式專題)

題目描述

春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的:
“水仙花數”是指一個三位數,它的各位數字的立方和等於其本身,比如:153=13+53+33。
現在要求輸出所有在m和n範圍內的水仙花數。

輸入
輸入資料有多組,每組佔一行,包括兩個整數m和n(100<=m<=n<=999)。

輸出
對於每個測試例項,要求輸出所有在給定範圍內的水仙花數,就是說,輸出的水仙花數必須大於等於m,並且小於等於n,如果有多個,則要求從小到大排列在一行內輸出,之間用一個空格隔開;
如果給定的範圍內不存在水仙花數,則輸出no;
每個測試例項的輸出佔一行。

樣例輸入
100 120
300 380

樣例輸出
no
370 371

提示在不知道m到n之間有多少個水仙花數的情況下,如何控制兩個數之間有空格,而最後一個水仙花數之後沒有空格?解決方法之一是:第一個水仙花數之前不加空格,而其後每個水仙花數之前加空格。而通過一個標識變數可以判斷出是否是第一個水仙花數。

初做多例項測試,要注意變數賦初值的位置。

#include<stdio.h>
int main()
{
    int m,n,i,t,x,y,z=0;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        z=0;
for(i=m;i<=n;i++) { t=i/100; x=i/10-i/100*10; y=i%10; if(t*t*t+x*x*x+y*y*y==i) printf("%d ",i);z=1; } getchar();//吸收最後一個空格 if(z!=1) printf("no"); printf("\n"); } return 0; }