设为首页收藏本站联系我们

JAVA中文站

 找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
JSP虚拟主机本站QQ群:36839023广告位招租JSP空间
查看: 9312|回复: 6

【每周一题】第3期:水仙花数

[复制链接]
  • TA的每日心情
    开心
    2014-8-28 10:49
  • 签到天数: 141 天

    [LV.7]常住居民III

    发表于 2012-9-13 09:46:32 | 显示全部楼层 |阅读模式
    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
    . i; Y" [  }7 m& Z& N
    0 q' s. w. {3 u6 Z$ b9 W/ v- @要求:1、测试通过;3 m; t+ ~+ u1 @6 ?5 R# F; _* k8 P# i
          2、界面友好;
    8 V* e) z  D3 [8 F      3、有详细的注释;

    该用户从未签到

    发表于 2012-9-14 16:47:30 | 显示全部楼层
    public class Narcissus {6 o/ [' J4 m% h0 l9 n
            public static void main(String[] args) {; j" S3 t. `8 u; N; i
    8 J3 @1 G7 p( d
                    for (int i = 1; i < 10; i++)
    ; u  h) f! @2 f7 A9 A                        for (int j = 1; j < 10; j++)* A/ O; _6 f" F4 r7 z
                                    for (int k = 1; k < 10; k++)9 p0 y% Z6 O8 Y: L9 n6 h. t; L2 ^9 g
                                            if ((i * 100 + j * 10 + k) == ((i * i * i) + (j * j * j) + (k * k * k)))
    0 Z' K* f/ Z( p  i+ S" j. n                                                System.out.println(i + "" + j + "" + k);6 J+ I/ A! f, m) \" o$ c( ]
            }
    5 N6 o) p1 j% _& }7 q
    5 {6 Y: _4 v; P3 ]  E  j4 @7 x6 C}! z( x3 N% U, j/ t+ O5 f

    评分

    1

    查看全部评分

    该用户从未签到

    发表于 2012-9-23 09:57:15 | 显示全部楼层
    package com.corejava.test;
    ; h3 B6 j5 s. ]3 d% k( N( o  M. v3 z+ S+ O- n( ^' h+ r9 j* ]/ p7 O7 R
    public class waterflowernumber {4 O  B- @0 `4 @) M+ x
    / R! q; L2 [/ y, ?( U* ^0 I6 }& C1 p
            public static void main(String[] args) {
    / ?+ K: I  u2 j2 a/ H                waterflowernumber d = new waterflowernumber();
    * U5 e9 F; ]9 b* m                d.printDaffodil();
    ; J: C3 N+ o9 ], `+ `( Q+ C* T        }
    % q3 Z( E% q" H, _2 U        /*********$ a" ~. u) |9 n
             * 打印100~1000之间的所有水仙花数
    ( B/ N' e" s- I# R) b6 `         */
    " `2 V8 h- e3 I/ O$ N        public void printDaffodil(){
    ! S) I( L$ P) M                for(int i=1000;i<10000;i++){0 l5 N' z- \& [! ]
                            /*if(isDaffodil(i)){; d8 t: Q! ~/ M8 A$ v/ M
                                    System.out.printf("%-5d",i);' t& ]1 N: o3 f7 ?$ X
                            }*/
    2 T: x! j8 Q1 T                        if(isDaffodil2(i,4)){  }$ Q. n0 ]9 F& _( e7 J$ x: I
                                    System.out.printf("%-5d",i);
    * n1 |6 C  w8 \% U                        }
    ( ?/ a' _+ a! d7 j! a* T1 Q                }
    9 `5 I, S1 x  ~: t1 V        }
    : e) G: X5 Y$ I8 C% }* M3 e1 j        /*******************
    : E" o3 W) w6 `# O: H: D         * 判断给定的数是否是水仙花数' Y8 f0 U8 ^8 R9 C& W0 A, O
             * 6 e. ^! K8 K% v, {3 E; {# O
             * @param data
    ( c: v; X2 M; E# k! u, l         * @return: `  D( a! w  N; B9 o7 B  o
             */+ c0 V' l- f# T4 P" c5 {* j
            public boolean isDaffodil(int data){4 f2 q' P9 T- a" X
                    //做边界判断
    ' L; e9 W& ]/ `9 u7 A                if(data < 100){
    ( F1 _" T7 G4 h) ^                        System.err.println("参数不合法:"+ data);
    " @0 s2 Y9 u0 @/ `; E                        return false;- {) @6 C8 U* ~, ~
                    }8 p6 w$ J/ q" R& a: j
                    //1.得到百位数
    - t0 Q4 ^6 D; g2 ?. \( M                int b = data / 100;
      g, C% k+ c# |7 }% M6 `$ O                //2.得到十位数4 L" B- w( o6 l! b8 v
                    int s = data % 100 / 10;2 w; y8 [8 y: O- c7 E9 n! l
                    //3.得到个位数
    3 m1 R+ o; V. a5 \0 D! Q; }                int g = data % 10;
    ; L' Y3 b; H4 b                //4.做判断& F' G  h% d% S/ A, k
                    if(Math.pow(b,3)
    . N; B' W7 V# g9 ]5 c  ^                                +Math.pow(s,3)" A: d: I6 ^- d* h) d
                                    +Math.pow(g, 3) == data){
    + H: R; b3 r& S! b6 A- [6 E# {                        return true;; F) I" F( K0 E
                    }else{
    0 U5 S8 m+ U5 \$ x                        return false;" J# Y) h5 e9 \- m/ h! G9 m
                    }7 g1 A0 ]+ v5 o0 y* Y" ]
            }/ o$ q$ @" w$ j, P% e& _
            // 23422, 5% m+ m8 g& ]4 g
            public boolean isDaffodil2(int data,int n){
    ( G% e0 P! f5 B6 W: l- C                int result = 0; //保存各个位数的N次幂之和0 c3 ]+ S, [( m! w) r
                    final int temp = data; //保存data,以便后面进行比较
    9 J) T+ L2 i7 O7 h) q% Y! B( N                for(int i=n-1;i>=0;i--){
    6 N! u; ]/ j+ s                        int m = (int)(Math.pow(10,i));/ M! X$ a9 W* Z7 J7 ?- o+ O5 s
                            //求出每一位, {: \$ ^7 ?4 p( _4 |. J* U
                            int bit = data / m;; n; L% y& \/ k" `# T% ~  B
                            //把数去掉最高位
    * v; G0 u4 [4 I                        data %= m;% u7 |6 ^9 N& w0 r  c) n8 Y
                            //要把每一位数的n次幂相加.  w2 B$ H. d+ H, w+ r. [7 {( |. W
                            result += Math.pow(bit, n);! ]! T8 E: K- C/ E% }
                    }% G" x4 @! J, X- Q5 y1 ]( [7 f
                    //比较
    / q9 ~% H# X% Q  F% h! M9 o                if(result == temp){
    % d& Y4 n: E2 N/ s1 v( }6 s                        return true;
    - O4 \% g1 F5 J& V9 o6 R: N                }else{
    % a+ s/ Z- g" i+ `                        return false;
    * {: t( a  K% Q' v7 l' A1 R                }" u" V0 `# b3 h* }) r$ H
            }! P2 |; U" o* Y
    }

    该用户从未签到

    发表于 2014-7-10 21:58:11 | 显示全部楼层
    我是新手,这是我的思路,应该是最简单的思路!谢谢% Y4 R1 w& u4 N7 \
    public class ShuiXianFlower {
    ( _( e& W! |5 j/ I' d! e. J& x3 j4 S        public static void main(String[] args) {8 ~& k* j/ O' a  {' ^
                    //题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,
    4 U# v, j' k& o3 w                //其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 "4 V* t" Y) Q. g: ?( r# z8 T& h
                    result();
    : r% F; o8 q0 K7 t3 g* m6 s; N/ m% E/ o        }$ S/ `  F; C# X& U+ Z; c

    # I* B3 J" {* P        private static void result() {% M7 R+ I) k( F5 K$ z. h
                    for(int i=100;i<1000;i++)
    7 ^6 U( d  o7 V& z                {/ K3 l% d) b1 s3 m' K
                            //求百位数:i/100 求十位数:i/10%10 求个位数:i%106 h# \' u1 q' H
                            //如果相等 则输出
    & w  @& D8 ?. E- V! u                        if(i==((Math.pow(i/100,3))+(Math.pow(i/10%10,3))+(Math.pow(i%10, 3))))/ \6 b* [# g+ b3 A" ^
                            {% X" L  K" P8 Z4 ~- f, |$ B1 k
                                    System.out.println("水仙花数:"+i);
    3 g0 U0 x, o$ @6 [' n                        }
    ! @1 s# O0 N, t2 F+ W+ U4 U- [                }
    ( B, [: e0 h9 e" q9 A5 c        }
    . J( p7 U) ]. C7 Y6 [/ d! {9 X6 R}
    4 g0 ^( S" Q$ n" ~

    该用户从未签到

    发表于 2014-7-11 16:25:27 | 显示全部楼层
    package For;
    7 w1 G( g$ D% I
      L/ b: J4 O$ _! ?$ B* {import java.util.Scanner;
    0 c0 A, m2 }: E; a  s* K3 \/*
    8 ^* f8 j! e) T  T- u" q * 计算1000以内的所有水仙花数。$ B# Q0 j3 I; V4 _5 l
    * 用户输入0到1000以内的某个数,0 g. R: J' s* `0 s5 f
    * 系统输出这个范围内的所有水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),: n4 d; m$ L, P3 {! X
    * 它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。=1+125+27
    ; |* b; c3 q* G. H2 K) q0 N */; B2 }2 T; M( r2 D1 }+ R) t
    public class narcissus {; c; n) m: \! f, [& q7 T
            public static void main(String[] args) {
    7 D6 s7 S4 ?2 I                //计算水仙花的数量7 R- u, B9 J& O' j
                    Scanner in=new Scanner(System.in);: d( ]" n' @2 n2 S9 M
                    System.out.println("请输入查找水仙花的范围:0~");1 O. k) `0 z( K  B2 |; ?( f
                    int max=in.nextInt();  p. m( U1 X: k  R7 e0 \, ~& C
                    in.close();
    " E0 j( x; V9 {) H4 _7 f$ z                for(int n=3;n<=max;n++){
    ' K+ h" S  ]% ~5 P; Y) m                        //先判断n是否为水仙花数
    . U5 i3 t8 A: E/ i                        int sum=0;' c6 U* h" G, I( o# U2 I$ B# K$ Q$ g, l
                            for(int m=n;m>0;m/=10){( }& C4 [  U6 N: U
                                    int v=m%10;) o$ q( Q+ H, `$ d8 `4 X
                                    sum+=v*v*v;
    ! S2 ~6 a. s7 ^, g. _' o                        }
    " _0 v" F5 I5 o& @0 n5 G                        if(n==sum){# k# ^# _+ ?) \4 b3 C6 U. X8 h
                                    System.out.print(n+" ");
    4 X, L4 a9 ?* _7 K0 s0 f                        }
    . ^. B- s& G) q+ K                }
    4 _/ P- g8 v( O4 e- z* J3 Q        }
    7 r6 r+ n6 w5 |4 Q* \5 h6 F}9 ?9 f( I: }5 G- J5 N$ o1 t8 l' b

    该用户从未签到

    发表于 2015-1-26 11:18:28 | 显示全部楼层
    public class test {
    8 A  k4 x& r7 y$ p+ o- ]5 ?        public static void main(String[] args) {* U, B- A! b4 r! i/ E
                    int x, y, z, a = 0, b = 0;. m* u' _, [' Z1 _3 o
                    for (x = 1; x < 10; x++) {1 W  X0 J! H  X& K; F5 \; m" L3 X
                            for (y = 0; y < 10; y++) {1 E# n3 d( q1 o- T& ?
                                    for (z = 0; z < 10; z++) {
    5 H" U0 @' m% i0 H                                        a = 100 * x + 10 * y + z;4 i, V, @& p* x8 P( H+ t
                                            b = x * x * x + y * y * y + z * z * z;
    $ ~) |2 r" u0 q                                        if (a == b) {3 n2 \, M- a) Y' y0 q. U0 _" p
                                                    System.out.println(a);
    7 R7 x3 u7 S& ~3 W                                        }
    1 D  K. l" t* l                                }
    ; T# N1 s. o& T5 j& p. w, g                        }
    $ F$ ?* X, L1 Q9 B9 D7 `. f( j6 k                }2 X; m! f7 Y# s
            }
    6 D3 I) }5 P, F* F4 [% y5 w}

    该用户从未签到

    发表于 2015-1-26 11:21:06 | 显示全部楼层
    public class test {
    3 x6 s, g8 B# y" v# d  A1 [+ o        public static void main(String[] args) {7 ]% `& E4 b! \& @6 ]3 T! A
                    int x, y, z, a = 0, b = 0;
    $ i, h  I; n! q/ I: F/ o+ b* L                for (x = 1; x < 10; x++) {) z# {& Q4 |8 P3 y
                            for (y = 0; y < 10; y++) {
    ( d* V5 |: a! d( a* |& Q/ |! b                                for (z = 0; z < 10; z++) {
    8 |7 x" a9 {" C/ x                                        a = 100 * x + 10 * y + z;
    7 N2 J8 D2 J- X( S, p                                        b = x * x * x + y * y * y + z * z * z;+ j8 E- Q& [: G5 {+ Z
                                            if (a == b) {% F  x4 T1 d( q) D% H/ L; M4 W  w
                                                    System.out.println(a);
    1 y0 v, t6 _% y$ P, O                                        }- K9 a5 V  {* N" `5 T( I
                                    }5 Q9 l( j/ s( `3 s; ~& B
                            }2 n& j$ n, U( Z6 I0 V
                    }6 O9 U$ X  g3 I
            }
    5 i5 Q7 W6 i  H$ y* ~}
    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    QQ|小黑屋|手机版|Archiver|联系我们|JAVA中文站 ( 浙ICP备12034637  

    GMT+8, 2018-2-11 04:40 , Processed in 3.003512 second(s), 34 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表