1. 程式人生 > 其它 >求n位數中有哪些水仙花數

求n位數中有哪些水仙花數

水仙花數是指一個N位正整數(N>=3),它的每個位上的數字的N次冪之和等於它本身。

例如:
153 = 1^3 + 5^3+ 3^3.

1634 = 1^4 + 6^4 + 3^4 + 4^4.

要求計算所有N位水仙花數,n由自己輸入,按從小到大的順序輸出水仙花數, 每個數一行;最後輸出一個整數, 代表水仙花數的個數.

輸入樣例 1

  3

輸出樣例 1

 153
 370
 371
 407
 4

c++程式碼如下

#include<iostream>

using std::cin;
using std::cout;
using std::endl;

bool IsNarcissisticNumber(int num, int n) {
	int s = num, t = 0;
	while (num) {
		int temp = 1;
		for (int i = 0; i < n; i++) {
			temp *= (num % 10);
		}
		t += temp;
		num /= 10;
	}
	return t == s;
}

int main() 
{  
	int n, max=1, min=1, count=0;
	cin >> n;
	for (int i = 1; i < n; i++) {
		min *= 10;
	}
	max = min * 10;
	for (int i = min; i < max; i++) {
		if (IsNarcissisticNumber(i, n)) {
			cout << i << endl;
			count++;
		}
	}
	cout << count << endl;
	return 0;
}