#include <iostream>
#include <cmath>
#include <vector>
// 函数计算一个整数的位数
int getNumberOfDigits(int num) {
int digits = 0;
while (num) {
digits++;
num /= 10;
}
return digits;
}
// 函数计算并返回一个整数的每个位数的次方和
int sumOfPowers(int num) {
int sum = 0;
int digits = getNumberOfDigits(num);
int originalNum = num;
while (num) {
int digit = num % 10; // 获取当前最低位的数字
sum += std::pow(digit, digits); // 计算该位数字的次方并加到总和中
num /= 10; // 移除当前最低位的数字,准备处理下一位
}
return sum;
}
// 主函数
int main() {
int m, n;
std::cin >> m >> n;
// 存储找到的 Armstrong 数
std::vector<int> armstrongNumbers;
// 遍历给定范围内的所有数字并检查它们是否是 Armstrong 数
for (int i = m; i <= n; ++i) {
if (i == sumOfPowers(i)) { // 如果数字等于其各个位数的次方和,则是 Armstrong 数
armstrongNumbers.push_back(i);
}
}
// 输出结果
if (armstrongNumbers.empty()) {
std::cout << "none";
} else {
for (int num : armstrongNumbers) {
std::cout << num << " ";
}
}
std::cout << std::endl;
return 0;
}