#include <stdio.h>
int partition(int x,int *y) {
if (x == 0) {
return 0;
}
//获取整数的位数
int count = 0;
int n = 0;
n = x;
while (n) {
n = n / 10;
count++;
}
//给数组填值
for (int i = count - 1; i >= 0; i--) {
y[i] = x % 10;
x = x / 10;
}
//把整数的位数返回
return count;
}
int main() {
int arr[10];
int left_num = 0;
int right_num = 0;
int narcissus_num = 0;
//接收边界
scanf("%d %d", &left_num, &right_num);
for (int i = left_num; i <= right_num; i++) {
//把每个整数拆分,并且获取整数的位数
int count = partition(i, arr);
int sum = 0;
//printf("%d\n", arr[i]);
//计算这个数
for (int j = 0; j < count; j++) {
sum = sum + arr[j] * arr[j] * arr[j];
}
//判断是不是水仙
if (sum == i) {
//打印水仙数,并且水仙个数加一
printf("%d ", i);
narcissus_num++;
}
}
if (0 == narcissus_num) {
printf("no");
}
return 0;
}