题目描述
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,它是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33153=13+53+33。
现在要求输出所有在 mm 和 nn 范围内的水仙花数。
输入格式
输入包含多组测试数据。
每组数据占一行,包含两个整数 mm 和 nn。
最后一行 0 0
表示输入结束。
输出格式
每组数据输出一行答案,从小到大输出所有位于 [m,n][m,n] 范围内的水仙花数,数之间用空格隔开,如果没有则输出 no
。
数据范围
100≤m≤n≤999100≤m≤n≤999,
输入最多包含 1010 组数据。
输入样例:
100 120
300 380
0 0
输出样例:
no
370 371
思路:
我发现好多题都可以用倒序数那道题的思路,把一个数每个位上的数单独分离出来,然后再根据题意进行运算。真是万能啊!
小二 ~ ~上代码!
#include <iostream>
using namespace std;
int flower(int n) {
int a, b, c;
a=n % 10;
b = (n / 10) % 10;
c = (n / 100) % 10;
if (a * a * a + b * b * b + c * c * c == n) {
return 1;
}
else return 0;
}
int main() {
int n, m, flag=0;
while (1) {
cin >> n >> m;
if (n == 0 && m == 0) {
break;
}
for (int i = n;i <= m;i++) {
if (flower(i) == 1) {
flag = 1;
cout << i << " ";
}
}
if (flag == 0) {
cout << "no";
}
cout << endl;
flag = 0;
}
return 0;
}