题目
题目简述
输入的数据有多组,每组在一行内输入两个整数m、n;在同一行内输出m和n范围内由小到大排序的的“水仙花数”,之间用空格隔开;如果该范围内不存在水仙花数,则输出no。
思路
定义一个输出数组,同过for循环逐个判断m和n范围内的数是否满足水仙花数的条件,将满足条件的数赋值到输出数组中,跳出循环后对输出数组进行排序输出即可。
代码实现
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int m, n, j = 0, search[1000];
while (cin >> m >> n)
{
if (m < 100 || n > 999 || m > 999 || n < 100 || m>n) return 0;
for (int i = m; i <= n; i++)
{
int temp[3];
temp[0] = i / 100;
temp[1] = (i % 100) / 10;
temp[2] = (i % 100) % 10;
int temp_2;
temp_2 = temp[0] * temp[0] * temp[0] + temp[1] * temp[1] * temp[1] + temp[2] * temp[2] * temp[2];
if (i == temp_2)
{
search[j] = i; j++;
}
}
sort(search, search + j);
if (j >= 1)
{
for (int i = 0; i < j-1; i++)
{
cout << search[i] << " ";
}
cout <<search[j-1]<< endl;
j = 0;
}
else
cout << "no" << endl;
}
return 0;
}