zoukankan      html  css  js  c++  java
  • 【2018 校招真题】水仙花数

    水仙花数

    2018 校招真题字节跳动水仙花数

    题目描述
    请判断一个数是不是水仙花数,其中水仙花数是指一个 n 位数 (n>=3),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)

    输入
    有多组测试数据,每组测试数据以包含一个整数 n(100<=n<=999),输入 0 表示程序输入结束。

    输出
    如果 n 是水仙花数就输出 Yes,否则输出 No。

    样例输入
    153
    154
    0

    样例输出
    Yes
    No

    Java 代码

    import java.util.Scanner;
    
    public class Solution {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            while (n != 0) {
                if (isShuiXianhua(n)) {
                    System.out.println("Yes");
                } else {
                    System.out.println("No");
                }
                n = scan.nextInt();
            }
        }
    
        public static boolean isShuiXianhua(int n) {
            int length = (n + "").length();
            int temp = n;
            int result = 0;
            while (n != 0) {
                result += Math.pow(n % 10, length);
                n = n / 10;
            }
            if (temp == result) {
                return true;
            }
            return false;
        }
    }
    

    题目描述
    春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。 现在要求输出所有在 m 和 n 范围内的水仙花数。

    输入描述
    输入数据有多组,每组占一行,包括两个整数 m 和 n。(100<=m<=n<=999)

    输出描述
    对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于 m,并且小于等于 n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;如果给定的范围内不存在水仙花数,则输出 no;每个测试实例的输出占一行。

    输入
    100 120
    300 380

    输出
    no
    370 371

    Java 代码

    import java.io.IOException;
    import java.util.Scanner;
    
    public class Solution {
        public static void main(String[] args) throws IOException {
            Scanner sc = new Scanner(System.in);
            int[] number = {153, 370, 371, 407};
            while (sc.hasNext()) {
                int m = sc.nextInt();
                int n = sc.nextInt();
                String s = "";
                for (int i = 0; i < number.length; i++) {
                    if (number[i] >= m && number[i] <= n) {
                        s = s + number[i] + " ";
                    }
                }
                if ("".equals(s)) {
                    System.out.println("no");
                } else {
                    System.out.println(s.substring(0, s.length() - 1));
                }
            }
        }
    }
    

    参考资料

  • 相关阅读:
    ES6中的新特性
    怎样优化CPU
    es6 一些小知识
    ECMAScript有6种继承方式(实现继承)
    angula的factory service provider
    angular的继承作用域通信
    MVP和MVC的区别
    判断浏览器版本语句大全
    IScroll5+在ios、android点击(click)事件不兼容解决方法
    css中单位px和em,rem的区别
  • 原文地址:https://www.cnblogs.com/hgnulb/p/10041520.html
Copyright © 2011-2022 走看看