黑马程序员技术交流社区

标题: 你可否知道N仙花数? [打印本页]

作者: 蓝七    时间: 2015-4-29 21:03
标题: 你可否知道N仙花数?
class N仙花数
{
        /*
        水仙花数并不陌生,满足这样的3位数,153=1*1*1+5*5*5+3*3*3。有几个呢?4个,153,370,371,407。
        那有没有这样的,abcd=a^4+b^4+c^4+d^4?   abcde=a^5+b^5+……
        请注意,3位数的3次幂,5位数的是5次幂。我不会告诉你92727=9^5+2^5+7^5+2^5+7^5 的。
        */
        public static void main(String[] args)
        {       
                for (int x=100;x<10000000 ;x++ )//遍历x的范围
                {
                        int count=1;
                        for (int y=x;y/10!=0 ;y=y/10 )//用来判断数据是几位数,用count存储。
                        {
                                count++;
                        }
                        int num=x;
                        double result=0;               
                        for (;num/10!=0 ;num=num/10 )//遍历数据,从个位到最高减一位。
                        {       
                                result=result+Math.pow((num%10),count);//累加各个位上count次幂之和,不包括最高位。
                        }
                        result=result+Math.pow((num%10),count);//加上最高位的。                               
                        if (x==result)//判断是否符合N仙花数规则,符合则输出当前数据的位数和数据。
                        {
                                System.out.print(count+"仙花数"+"\t");
                                System.out.println(x+"\t");                               
                        }
                }
        }
}//为了2个技术分我也是拼了。。。


作者: 王英明    时间: 2015-4-29 21:07
呵呵呵,抢地主了!动作真快
作者: zhubingg    时间: 2015-4-29 21:17
不错不错! 搞了一下午 还可以把!
作者: bboyXiaoNuo    时间: 2015-4-29 21:22
今天刚学到,好厉害好厉害
作者: 崔小可    时间: 2015-4-29 21:33

今天刚学到,好厉害好厉害,向你学习这种研究的精神!!
作者: ayl648989    时间: 2015-4-29 21:37
好厉害好厉害,向你学习这种研究的精神!
作者: andre    时间: 2015-4-29 21:39
今天视频看到这里了
作者: 雪风飞花    时间: 2015-4-29 21:42
刚学过,看楼主貌似忘写思路了
作者: 严晗哲    时间: 2015-4-29 22:03
才发觉原来不止立方的可以啊~
作者: 黄敬璇    时间: 2015-4-29 22:06
思维拓展能力好强啊
作者: nine789    时间: 2015-4-29 22:19
最简单的 水仙花 是这样的

  1. /*
  2.         打印出所有的"水仙花数"。
  3.         所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
  4.         153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
  5.        

  6.         思路:
  7.                 A:"水仙花数"是指一个三位数,告诉我们范围了。100-999
  8.                 B:153=1的三次方+5的三次方+3的三次方通过这个例子
  9.                         一个数据的个位立方+十位立方+百位立方=该数据
  10.                 C:如何获取个位,十位,百位的数据?
  11.                         对于任意的数据x。获取个位怎么办呢?

  12.                         153:

  13.                         个:153%10 = 3
  14.                         十:153/10%10 = 5
  15.                         百:153/10/10%10 = 1
  16.                         千:x/10/10/10%10 -- .........
  17. */
  18. class FlowerDemo
  19. {
  20.         public static void main(String[] args)
  21.         {
  22.                 for(int x=100; x<1000; x++)
  23.                 {
  24.                         //x就是任意数据

  25.                         int ge = x%10;
  26.                         int shi = x/10%10;
  27.                         int bai = x/10/10%10;

  28.                         if((ge*ge*ge+shi*shi*shi+bai*bai*bai)==x)
  29.                         {
  30.                                 System.out.println(x);
  31.                         }
  32.                 }
  33.         }
  34. }
复制代码




同理:

问:        请输出满足这样条件的五位数。
                个位=万位
                十位=千位
                个位+十位+千位+万位=百位




  1. class Demo13
  2. {
  3.         public static void main(String [] args)
  4.         {
  5.                 for (int x=10000;x<=99999 ;x++ )
  6.                 {
  7.                         int a=x%10;
  8.                         int b=x/10%10;
  9.                         int c=x/10/10%10;
  10.                         int d=x/10/10/10%10;
  11.                         int e=x/10/10/10/10%10;
  12.                         //int f=
  13.                         if (a==e && b==d && a+b+d+e==c)
  14.                         {
  15.                                 System.out.println(x);
  16.                         }
  17.                 }
  18.         }
  19. }
复制代码




作者: xfliyy    时间: 2015-4-29 22:37
学习了:L




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2