思路:先打个表将所有的水仙花数求出来,然后每输入两个数从头开始查就可以了
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
using namespace std;
int a[100000];
int tmp[10000];
int main()
{
int num = 0;
for(int i=1;i<10;i++)
for(int j=0;j<10;j++)
for(int k=0;k<10;k++)
{
if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
a[num++] = i*100+j*10+k;
}
sort(a,a+num);
//freopen("in.txt","r",stdin);
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
int ans = 0;
for(int i=0;i<n;i++)
{
if(a[i]>n)
break;
if(a[i]<=n&&a[i]>=m)
tmp[ans++] = a[i];
}
if(ans==0)
printf("no\n");
else
{
printf("%d",tmp[0]);
for(int i=1;i<ans;i++)
printf(" %d",tmp[i]);
printf("\n");
}
}
}