Java教程

水仙花数 输入位数

本文主要是介绍水仙花数 输入位数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

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

 

输入

 

输入在一行中给出一个正整数N(3\le N\le 73≤N≤7)。

 

输出

 

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

 

输入样例 1 

3

输出样例 1

153
370
371
407
主要是时间问题,用math里的pow的话就会出现超时的问题;
#include<stdio.h>
int pow(int a,int b)
{
    int i,s=1;
    for (i = 0; i < b; i++)
    {
        s *= a;
    }
    return s;
}
int main()
{        
        int n;
        scanf("%d", &n);
        int s = 0, i, j, begin, end;
        begin = pow(10, n - 1);
        end = pow(10, n) - 1;
        for (i = begin; i <= end; i++)
        {
            s = 0;
            j = i;
            while (j)
            {
                s += pow(j % 10, n);
                j /= 10;
            }
            if (s == i)
                printf("%d\n", i);
        }
    return 0;
    }

 


                    
这篇关于水仙花数 输入位数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!