#include<stdio.h>
int poww(int x, int y);
int main(void)
{
int n,i,j,a,sum,item;
scanf("%d", &n);
for (i=poww(10,n-1); i<poww(10,n); i++){
item = i; //用中间变量item代替i,防止(i = i/10)改变了i的值,从而无限循环
sum = 0;
for (j=1; j<=n; j++){
a = item%10;
sum += poww(a,n);
item /= 10;
}
if (sum == i)
printf("%d\n",i);
}
return 0;
}
int poww(int x, int y) //x是各位数字,y是次方
{
int i,t=1; //t用来储存x的y次方
for (i=1; i<=y; i++){
t *= x;
}
return t;
}
PAT里的是不是很多同学会在“7位数”这里遇到超时问题,超时是因为调用了库里的pow()函数。只需要自己定义一个求x的y次方函数即可。