A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2.         需求:水仙花数是三位数,个十百位每一个数字的立方和等于该数本身。打印所有的水仙花数字。
  3.         思路:
  4.                 A:将水仙花数视为主体,取出个十百三位数字,方法为除10、模10,进行规则判定。
  5.                 B:换一种思路,将三位数视为个十百三个数位的数字组成,进行规则判定后组合成三位数。
  6.                 C:判断该数是否符合水仙花数的规则,符合则输出。
  7. */

  8. class Flower {
  9.         public static void main(String[] args) {
  10.                 //利用三层循环控制个十百位上的数字变化
  11.                 for (int bai =1;bai<=9 ;bai++ ) {
  12.                         for (int shi=0;shi<=9 ;shi++ ) {
  13.                                 for (int ge=0;ge<=9 ;ge++ ) {
  14.                                         if (ge*ge*ge+shi*shi*shi+bai*bai*bai==100*bai+10*shi+ge) {
  15.                                                 System.out.println(100*bai+10*shi+ge);
  16.                                         }
  17.                                 }
  18.                         }
  19.                 }
  20.         }
  21. }
复制代码

8 个回复

倒序浏览
n361204357 发表于 2015-7-10 22:54
  • 我感觉这个思路很清晰,不用取模之类,思路上不用过多的考虑。
  • 这面是我总结的几个方法:
  • class  ...

  • 就是觉得取模不太容易想到
    回复 使用道具 举报
    求立方在MATH中有专门的,   Java提供求n次方的方法:java.lang.Math.pow(a, b);其表示为a的b次方。
    回复 使用道具 举报
    我觉的楼主的这种方法效率比第一种高一点点呢,省去了除法运算
    回复 使用道具 举报
    经过运算测试  无论是取模还是利用for循环的方式,两种方法运算的时间都为2毫秒,有时甚至第一种方法更快,只需要一毫秒,实际差别不大。
    回复 使用道具 举报
    其实还是挺厉害的
    回复 使用道具 举报
    18671183990 发表于 2015-7-11 11:56
    经过运算测试  无论是取模还是利用for循环的方式,两种方法运算的时间都为2毫秒,有时甚至第一种方法更快, ...

    有什么工具能看到运算的时间吗?刚开始学,还不清楚
    回复 使用道具 举报
    好想法,,
    回复 使用道具 举报
    任文龙 发表于 2015-7-11 20:29
    有什么工具能看到运算的时间吗?刚开始学,还不清楚

    abstract class  GetTime
    {
            public final void getTime()
            {
                    long start=System.currentTimeMillis();// 获取时间
                    run();
                    long end=System.currentTimeMillis();//获取时间
                    System.out.println("程序运行的时间为:"+(end-start)+"ms"); //获取内容程序运行的时间
           
            }
            public abstract void play();
            public abstract void run();//在此程序中,该抽象方法被子类改写;
    }
    class GetTimeDemo extends GetTime
    {
            public  void play(){}
            public void run()
            {
                    for(int i=0;i<10000;i++)
                    {
                            System.out.print(i+"\t");
                    }
                    System.out.println();
            }
    }
    class GetTimeTest
    {
            public static void main(String[] args)
            {

                    GetTimeDemo s=new GetTimeDemo();
                    s.getTime();
            }
    }
    我也才开始学,查一下API吧,加油吧
    回复 使用道具 举报
    您需要登录后才可以回帖 登录 | 加入黑马