1261: 水仙花數
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 633 Solved: 222
[Submit][Status][Web Board]
Description
春天是鮮花燦爛的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的:“水仙花數”是指一個三位數,它的各位數字的立方和等於其本身,比如:153=1^3+5^3+3^3。現在要求輸出所有在m和n範圍內的水仙花數。
Input
輸入數據有多組,每組佔一行,包括兩個整數m和n(100<=m<=n<=999)。
Output
對於每個測試實例,要求輸出所有在給定範圍內的水仙花數,就是說,輸出的水仙花數必須大於等於m,並且小於等於n,如果有多個,則要求從小到大排列在一行內輸出,之間用一個空格隔開(注意每組輸出的最後一個數之後不要加空格);如果給定的範圍內不存在水仙花數,則輸出no;每個測試實例的輸出佔一行。
Sample Input
100 120
300 380
Sample Output
no
370 371
思路:
水題,直接暴力,注意一下個位、十位、百位的就行!
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int a[1000];
int main()
{
int m,n;
while(~scanf("%d%d",&m,&n))
{
int len=0,flag=0;
for(int i=m;i<=n;i++)
{
int x=(i%10)*(i%10)*(i%10);//個
int y=(i%100/10)*(i%100/10)*(i%100/10);//十
int z=(i/100)*(i/100)*(i/100);//百
int t=x+y+z;
if(t>i)
continue;
if(t==i)
{
a[len++]=i;
flag=1;
}
}
if(!flag)
{
printf("no\n");
continue;
}
for(int i=0;i<len-1;i++)
printf("%d ",a[i]);
printf("%d\n",a[len-1]);
}
return 0;
}