输入位数N,输出所有N位水仙花数。
非常简单的一个程序,但是细节的地方还是要仔细考虑,比如n>=0,要包含=0。
这种方法过于笨拙,应该有改进算法,有时间再写。
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
int pow(int m,int n){
if (n == 0)
return 1;
else
return pow(m, n-1)*m;
}
void main(){
int num;
cin >> num;
int i, sum,temp;
for (int m= pow(10, num - 1); m < pow(10, num); m++){
sum = 0;
temp = m;
for (int n = num - 1; n>=0; n--){
i = temp / pow(10, n);
temp -= i*pow(10, n);
sum += pow(i, num);
}
if (sum == m)
cout << m << endl;
}
system("pause");
}