1. 程式人生 > >C語言求水仙花數

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;
}