int pan(int z,int y){
int x,w,v;
v=0;
while(z){
x=z%10;
z=z/10;
w=pow(x,y);
v=v+w;
}
return v;
}
// Author:PanDaoxi
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int INF = 8;
int n, k, t;
signed main(){
ios :: sync_with_stdio(false);
cin >> n;
for(int i=pow(10, n-1); i<=pow(10, n)-1; i++){
t = i, k = 0;
while(t){
k += pow(t%10, n);
t /= 10;
}
if(k == i) cout << i << endl;
}
return 0;
}
实在不行的话就打表吧,这个数据范围挺小的。毕竟n2过百万。
思路:对于一个数,把每一位抠出来,并计算n方和,若与原数相等,则为水仙花数
如 x = 153
int sum = 0;
int t = x;
while(t)
{
Sum += pow(t%10,n);
t/= 10;
}
if (sum == x)
则 printf(“水仙花数”);