水仙花数——HDU-2010

题目

水仙花数——HDU-2010

题目简述

输入的数据有多组,每组在一行内输入两个整数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;
}