7-7 求“厉害”数 (20分)
所谓“厉害”数,是指其各位数字的5次方等于该数本身。编程输出所有长度不超过n位的正整数中的“厉害”数。
输入格式:
一个整数n (1<=n<=6)
输出格式:
每行一个“厉害”数
输入样例:
4
输出样例:
1
4150
4151
#include<stdio.h>
#include<math.h>
int main(){
int n,k,max,i,tmp,sum=0,x;
scanf("%d",&n);
k=n;
max=(int)pow(10,n); //pow()是double,所以要把它转化为int
for(i=1;i<max;i++){
tmp=i;
while(--k){
x=tmp/(int)pow(10,k);
sum+=(int)pow(x,5);
tmp=tmp%(int)pow(10,k);
}
sum+=(int)pow(tmp,5); //到个位数的时候退出来了,没有加。
if(sum==i)
printf("%d\n",i);
sum=0;
k=n; //复原 k ;
}
return 0;
}