1. 程式人生 > >PAT:4-1. 水仙花數(20)

PAT:4-1. 水仙花數(20)

水仙花數是指一個N位正整數(N>=3),它的每個位上的數字的N次冪之和等於它本身。例 如:153 = 13 + 53+ 33。 本題要求編寫程式,計算所有N位水仙花數。

輸入格式:

輸入在一行中給出一個正整數N(3<=N<=7)。

輸出格式:

按遞增順序輸出所有N位水仙花數,每個數字佔一行。

輸入樣例:
3
輸出樣例:
153
370
371
407
#include <stdio.h>
int main(void) {
	int i, j, n, low = 1, high, temp, sum, item, remainder;
	scanf("%d", &n);
	for(i = 1; i < n; ++i){
		low *= 10;
	}
	high = low * 10;
	for(i = low; i < high; ++i) {
		temp = i;
		sum = 0;
		while(temp > 0) {
			remainder = temp % 10;
			item = remainder;
			for(j = 1; j < n; ++j){
				item *= remainder;
			}
			sum += item;
			temp /= 10;
		}
		if(i == sum)
			printf("%d\n", i);
	}	
	return 0;
}