首页 > 代码库 > 04-1. 水仙花数(20)

04-1. 水仙花数(20)

水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例 如:153 = 13 + 53+ 33。 本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3<=N<=7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:

3

输出样例:

153370371407

注:这里实现了最高7阶的水仙花,用了7个变量保存每一位的n次方结果(当n<7时,后面的几个变量会和0做乘法,所以不会影响<7阶的水仙花),最后输出的时候把这7个变量的和输出即可

#include "stdio.h"int main(){    int N,n=1,i,k,j,l;    int a,b,c,d,e,f,g;    int sa,sb,sc,sd,se,sf,sg;    scanf("%d",&N);    j=l=N;    while(N>1){        n*=10;        N--;    }    i=n;    a=b=c=d=e=f=g=0;    while(n<i*10)    {        k=n;        a=k%10;        k=k/10;        b=k%10;        k=k/10;        c=k%10;        k=k/10;        d=k%10;        k=k/10;        e=k%10;        k=k/10;        f=k%10;        k=k/10;        g=k%10;        k=k/10;        sa=sb=sc=sd=se=sf=sg=1;        while(j>0)        {            sa*=a;            sb*=b;            sc*=c;            sd*=d;            se*=e;            sf*=f;            sg*=g;            j--;        }        j=l;        if(n==sa+sb+sc+sd+se+sf+sg)        {            printf("%d\n",n);        }        n++;    }    return 0;}

04-1. 水仙花数(20)