首页 > 试题广场 >

水仙花数

[编程题]水仙花数
  • 热度指数:11816 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

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


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


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

输入

100 120 
300 380

输出

no
370 371
封装一下
import java.util.Scanner;
public class Main {
    public static void main (String[] arg0) {
        Scanner sca = new Scanner(System.in);
        while (sca.hasNext()) {//接口
            test(sca.nextInt(), sca.nextInt());
        }
    }
    //循环体
    public static void test (int m, int n) {
        boolean temp = false;
        for (int i = m; i <= n; i++) {
            if (panduan(i)) {
                System.out.print(i + " ");
                temp = true;
            }
        }
        if (!temp) {
            System.out.print("no");
        }
        System.out.println();
    }
    //判断方法
    public static boolean panduan (int num) {
        int a = 0;
        int t = num;
        int r = 0;
        while (t != 0) {
            a = t % 10;
            r += (int)Math.pow(a, 3);
            t /= 10;
        }
        if (r == num) return true;
        return false;
    }
}


发表于 2022-01-26 23:47:52 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int hundred = 0, ten = 0, one = 0;    // 百位 十位 个位
        StringBuffer sb;
        while (in.hasNext()) {
            sb = new StringBuffer();
            int m = in.nextInt();
            int n = in.nextInt();
            for (int i = m; i <= n; i++) {
                hundred = i / 100;
                ten = (i % 100) / 10;
                one = i % 10;
                if (i == ((int) Math.pow(hundred, 3) + (int) Math.pow(ten, 3) + (int) Math.pow(one, 3))) {
                    sb.append(i + " ");
                }
            }
            if (sb.toString().equals("")) {
                System.out.println("no");
            }else{
                System.out.println(sb);
            }
        }
    }
}

发表于 2021-03-27 22:36:58 回复(0)
import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m , n, a, b, c;
        boolean flag;
        // sc.hasNext() : 当控制台输入不是"-"时,就将其压入栈中,当输入为"-",栈不为空则弹出。
        while (sc.hasNext()){
            m = sc.nextInt();
            n = sc.nextInt();
            flag = false;
            for (int i = m ; i <= n; i++){
                a = i / 100;
                b = i % 100 /10;
                c = i % 10;
                if (i == a*a*a + b*b*b + c*c*c) {
                    flag = true;
                    System.out.print(i + " ");
                }
            }
            if (!flag) {
                System.out.print("no");
            }
            System.out.println();
        }
    }
}

发表于 2021-02-26 11:30:17 回复(0)