题解 | #水仙花数#

水仙花数

http://www.nowcoder.com/practice/11c9f023a9f84418a15b48792a5f7c70

简单题不太简单啊

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int m = sc.nextInt();
            int n = sc.nextInt();
            List<Integer> res = new ArrayList<>();
            for(int i = m; i <= n; i++){        //遍历 m--n 范围内的数值
                int tmp = 0, stp = i, ans = 0;
                while(stp != 0){                // 判断当前取整后是否为0,不是则继续
                    // tmp 暂存当前数 i 除以10的余数(即从右开始取其位数)
                    tmp = stp % 10;
                    // stp 暂存当前数 i 除以10的整数(用于判断是否取余到最后一位)
                    stp /= 10;
                    // 计算每次所余数的位数的立方和
                    ans += tmp * tmp * tmp;
                }
                if(ans == i){        //如果立方和与当前数 i 相等,将其加入 res 数组中
                    res.add(i);
                }
            }
            if (res.isEmpty()){            //判断得到的 res 数组是否为空,为空输出 no
                System.out.println("no");
            }else {                        //不为空,则输出对应符合的水仙花数
                for (int index : res){
                    System.out.print(index + " ");
                }
                System.out.println();
            }
        }
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务