######习题4-6 水仙花数 (20分)

######习题4-6 水仙花数 (20分)_第1张图片
只有通过把pow函数,自己改写成p函数,才能解决超时问题

在这里插入代码片
#include
int p(int,int);
int pan(int,int);
int main(){
    int n;
    scanf("%d",&n);
    for(int i=p(10,n-1);i<p(10,n);i++){
        if(pan(i,n)){
            printf("%d\n",i);
        }
    }
}
int pan(int number,int n){
    int sum=0;
    int a=number;
    while(a>0){
        int t=a%10;
        sum+=(int)p(t,n);
        a=a/10;
    }

    if(sum==number){
        return 1;

    }else
    return 0;
}
int p(int a,int b){
    int t=a;
    for(int i=1;i<b;i++){
        a*=t;
    }
    return a;
    }

你可能感兴趣的:(复试)