水仙花数

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

输入格式:

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

输出格式:

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

输入样例:

3

输出样例:

153
370
371
407

解题思路:

  1.根据用户输入确定上下界,如输入3,则上届为999,下界为100

  2.调用自设函数会比使用Math调用pow方法用时更快

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int range = in.nextInt();
        int min = pow(10,range-1);
        int max = pow(10,range)-1;

        for(int i=min;i<=max;i++){
            int result = 0;
            for(int j=1;j<=range;j++){
                int n = i%pow(10,j)/pow(10,j-1);
                result += pow(n,range);
            }
            if(result == i){
                System.out.println(i);
            }
        }
    }
    public static int pow(int a,int b){
        int pow = 1;
        for(int j=1;j<=b;j++) {
            pow = pow * a;
        }
        return pow;
    }
}
posted @ 2023-11-03 20:35  鸢凛  阅读(95)  评论(0编辑  收藏  举报