题目描述
编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。
所谓 的水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。
输入格式
共1行,1个整数(N)。
输出格式
若干行,每行1个整数。(输出从100到N之间的所有水仙花数,每个数以回车结束。)
输入输出样例
输入 #1复制
400
输出 #1复制
153 370 371
#include <iostream>
using namespace std;
int main()
{
//1, 输入一个三位数
//2,在100到这个三位数的范围循环
//3, 拿到一个三位数,找出百位,十位,个位上的数字
//4,判断是不是水仙花数
//5,如果是水仙花数,就输出;如果不是,继续循环,拿下一个数判断
int n,x,y,z;
cin >> n;
//判断输入值是否合法
if (n <100 || n >= 1000) {
cout << "输入值不是三位数";
}
for (int i = 100; i <= n; i++)
{
x = i / 100;
y = i / 10 % 10;
z = i % 10;
//判读三位数是不是水仙花数
if (x * x * x + y * y * y + z * z * z == i)
{
cout << i << endl;
}
}
return 0;
}