菜鸟笔记
提升您的技术认知

C语言求水仙花数

题目描述:

水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。 现在要求输出所有在m和n范围内的水仙花数。

输入描述

输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。

输出描述
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。

测试代码如下

#include <stdio.h>
int main()
{
	int start, end, i = 0, a, b, c, size = 0;
	while (scanf("%d %d", &start, &end) == 2)
	{
		for (i = start; i <= end; i++)
		{
			a = i / 100;
			b = i / 10 % 10;
			c = i % 10;
			//total = pow(c, 3) + pow(a, 3) + pow(b, 3);
			if ((a*a*a + b*b*b + c*c*c) == i)  //满足水仙花条件
			{

				if (size == 0)   //size=0输出第一个水仙花数 
				{
					printf("%d", i);
				}
				else     //size++输出第二。。第n个水仙花数
				{
					printf(" %d", i);
				}
				size++;   //个数++;
			}
		}
		if (size == 0)   //范围内个数为0,则说明没有满足条件的
		{
			printf("no");
		}
		printf("\n");
	}
	return 0;
}