zoukankan      html  css  js  c++  java
  • 🌞147 · 水仙花数

    题目描述

    水仙花数的定义是,这个数等于他每一位数上的幂次之和 见维基百科的定义

    比如一个3位的十进制整数153就是一个水仙花数。因为 153 = 13 + 53 + 33。

    而一个4位的十进制数1634也是一个水仙花数,因为 1634 = 14 + 64 + 34 + 44。

    给出n,找到所有的n位十进制水仙花数。

    你可以认为n小于8。


    实例

    样例 1:

    输入: 1
    输出: [0,1,2,3,4,5,6,7,8,9]
    样例 2:

    输入: 2
    输出: []
    样例解释: 没有2位数的水仙花数。

    题解

    Java

    public static int[] getN(int n){
            if (n==1){
                return new int[]{0,1,2,3,4,5,6,7,8,9};
            }
            int[] s = new int[10];
            ArrayList<Integer> list = new ArrayList<>();
    
            s[0] = 0;
            s[1] = 1;
            for (int i = 2; i <= 9; i++) {
                int a = (int) Math.pow(i,n);
                s[i] = a;
            }
    
            int lower = (int) Math.pow(10,n-1);
            int upper = lower * 10;
    
            for (int i = lower;i<upper;i++){
                int k = i;
                int sum = 0;
                while ( k>0 ){
                    int a = k%10;
                    sum += s[a];
                    k = k/10;
                }
                if (sum == i){
                    list.add(i);
                }
            }
            return list.stream().mapToInt(Integer::valueOf).toArray();
        }
    
  • 相关阅读:
    爱生气的书店老板
    数组的度
    最大连续 1 的个数
    最大连续1的个数 III
    尽可能使字符串相等
    Java数据类型转换
    CSS卡片制作
    关于eclipse关联源码问题
    tomcat服务器对于http协议的处理
    shiro源码分析-认证过程
  • 原文地址:https://www.cnblogs.com/charlottepl/p/15638907.html
Copyright © 2011-2022 走看看