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

JAVA中文站

 找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

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

    [LV.7]常住居民III

    发表于 2012-9-13 09:46:32 | 显示全部楼层 |阅读模式
    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。9 F) ^) ?" d/ [  E8 {* r

    + v7 E; |; `  b! |7 f1 O: D要求:1、测试通过;
    . y% }1 d. p" C: n3 n0 I9 d. P! i! k      2、界面友好;$ z, k3 a9 w4 B) H
          3、有详细的注释;

    该用户从未签到

    发表于 2012-9-14 16:47:30 | 显示全部楼层
    public class Narcissus {0 ^2 L/ ^$ V5 M  `3 {& m0 t+ v# Q6 u
            public static void main(String[] args) {- ~+ r, t/ ~6 M& E

    % ?; q9 L$ I$ A. G( d/ [2 L, b( r                for (int i = 1; i < 10; i++)& I! E  t# Z% V
                            for (int j = 1; j < 10; j++)8 j2 |2 g: P# }7 L' d& i. a6 x9 v( v
                                    for (int k = 1; k < 10; k++): _) I! B+ e0 Q7 l) H
                                            if ((i * 100 + j * 10 + k) == ((i * i * i) + (j * j * j) + (k * k * k)))
    " A9 k' h4 G* b6 \. n& a                                                System.out.println(i + "" + j + "" + k);
    . C- `, W  N9 ^+ B) w* u: `& I        }- e6 r6 e! A5 g: k7 K

    # u1 f' ~2 F7 f% s- {0 U6 ^$ k}& N5 B# N) i2 R$ o

    评分

    1

    查看全部评分

    该用户从未签到

    发表于 2012-9-23 09:57:15 | 显示全部楼层
    package com.corejava.test;
    ( J  x/ ?( h! y" ~
    4 }3 L: @* P; V0 n7 K, k! U7 [public class waterflowernumber {* h. A9 W( f+ G6 t( q. k
    : I+ m/ }8 u$ ?* H( U6 d" Z2 j
            public static void main(String[] args) {
    ! G( u( \7 p7 w( L% y; l- k                waterflowernumber d = new waterflowernumber();, b3 P4 v) r2 d$ Y; [; G
                    d.printDaffodil();* {8 b5 s, _; Q
            }8 L9 k; g4 Y" e  E
            /*********+ ?' }8 W1 D  g( p- k7 n
             * 打印100~1000之间的所有水仙花数) o) |+ ^- w4 p& O9 X# ~
             */; j  D% B; w( u; w+ }- Q
            public void printDaffodil(){- s! v! e- E6 w- E  C
                    for(int i=1000;i<10000;i++){
    / l% C; U! k6 m7 e4 d0 V                        /*if(isDaffodil(i)){# W, V, x# y$ m$ X9 w( U
                                    System.out.printf("%-5d",i);
    4 x# O& }% {: _+ A                        }*/
    ! Q0 o5 O5 z* H                        if(isDaffodil2(i,4)){
    ( n2 C% _- h9 J( X9 c# d7 K; ?                                System.out.printf("%-5d",i);
    ' F$ |! i# `+ X7 U  N7 K                        }
    ! d7 W! j  n3 |  ~                }& V" e$ D' M$ ?+ t" i$ w) X, c
            }( t4 X* O4 S; @- a( e
            /*******************7 H) \6 l- N* F) L& v/ \
             * 判断给定的数是否是水仙花数1 s3 ~$ p+ F$ t
             *
    " p6 w4 d9 X$ p2 h; _9 R         * @param data- f* D! R( e3 m: R2 R7 W
             * @return9 T9 s/ W- x( U4 F9 ^! S6 U9 U! E
             */
    ( O4 Q9 G3 c! F7 N6 d" z        public boolean isDaffodil(int data){; G  {7 Q( ^7 g3 b; t0 Q8 n
                    //做边界判断7 W2 i! b" F* v  M0 \! N+ @3 v
                    if(data < 100){
    , P! q; W9 k) m+ {; W4 q4 Q                        System.err.println("参数不合法:"+ data);, }% |: q' m0 S4 h9 q& d
                            return false;7 Z  u  w' Y+ \" u8 R8 s
                    }
    # O* R: k' ^$ G. P" a                //1.得到百位数
    % I. R$ j3 N+ U: I$ i! s( R' X                int b = data / 100;
    2 K& ?+ r! j2 k5 H! V- h6 d9 h                //2.得到十位数9 K( ~' r1 U: c, p# a$ P- u
                    int s = data % 100 / 10;: G" j. {" h6 Y* o
                    //3.得到个位数
    ; s0 K  O3 i7 q3 d                int g = data % 10;  f! @- Y) N  Y9 X# E9 o; n/ [
                    //4.做判断) {  l+ v+ U! Z, ?; ^& K5 x+ B3 q' ]
                    if(Math.pow(b,3)
    7 \! `7 R6 v$ O/ W3 u                                +Math.pow(s,3)$ U% K+ r! Y: o+ r/ n) p) P
                                    +Math.pow(g, 3) == data){; T; U  Y+ o8 U4 P  F0 v
                            return true;7 i- h# `' k: Z* W
                    }else{( U, r! d( g$ k- e, T+ Q
                            return false;6 v3 h+ S4 S2 v& ~5 u/ v0 o# e
                    }+ N: C" @. n* |1 A1 G
            }8 W8 B+ W5 H$ u- b
            // 23422, 5
    . a9 j* Y& s% R: I        public boolean isDaffodil2(int data,int n){3 ^! H7 _. N, r. K9 N# `4 J2 Y" k
                    int result = 0; //保存各个位数的N次幂之和) @3 Z0 [$ S% a0 L! J- d
                    final int temp = data; //保存data,以便后面进行比较
    ( _! }" U( R& k& y/ M, {                for(int i=n-1;i>=0;i--){
    , H9 O7 W4 f( c: N: r) r  _6 W- d: T                        int m = (int)(Math.pow(10,i));
    9 e4 m5 S0 Y6 O1 X$ W. S8 K                        //求出每一位
    - L  B* p( V5 i) I5 }+ X4 Q                        int bit = data / m;' ^4 _2 i) S' W! R: x+ U
                            //把数去掉最高位; `! ^+ C( d: b. M. ?  V8 p
                            data %= m;' f0 m6 C: B8 U6 Q! G- K/ s
                            //要把每一位数的n次幂相加.
    ' E5 M. I& W% b) B! X2 B* ^                        result += Math.pow(bit, n);
    3 b4 `' ^. }. E: a9 u0 ?# Z                }
    1 X9 v& U2 A5 m: A2 O% O                //比较
    " s* H: I: R8 N/ c3 k                if(result == temp){9 H8 d4 \. b; y' \, x# |( v4 ], \
                            return true;
    2 L- @- @5 N" I7 J4 T' |                }else{/ ^9 y1 E- [2 I1 f1 s& W: _. D
                            return false;8 h3 T! s$ Z$ Z; Y
                    }* Z6 D; X) b9 Q# x
            }3 [; @4 i) V* f5 k
    }

    该用户从未签到

    发表于 2014-7-10 21:58:11 | 显示全部楼层
    我是新手,这是我的思路,应该是最简单的思路!谢谢
    9 ?+ L; @, u; r& {5 G. kpublic class ShuiXianFlower {
    ) \+ K! R$ K4 a5 L        public static void main(String[] args) {0 s) k7 U' C- f/ f: ]# M
                    //题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,$ @  l$ s( u. E8 m) Z  K9 b
                    //其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 "& H1 @- V& \# K& N
                    result();( P5 g4 ?4 g8 ]& U: l" |& l
            }2 h# U0 r, Z3 D: M/ z
    : [5 `- M* _+ S& {
            private static void result() {$ L" @+ R* O- ~
                    for(int i=100;i<1000;i++)2 o3 i( \4 v1 A- b" e1 z
                    {* q" z5 g, q+ N5 Y8 |
                            //求百位数:i/100 求十位数:i/10%10 求个位数:i%10
    ( S" t- M9 O. A5 P' f1 P                        //如果相等 则输出$ q: a5 j- v5 Q% n% G
                            if(i==((Math.pow(i/100,3))+(Math.pow(i/10%10,3))+(Math.pow(i%10, 3))))
    3 [9 F( h* c3 h; U" J1 b( A& F                        {
    3 ]- D. e6 Z8 q2 t, D5 w& s                                System.out.println("水仙花数:"+i);8 o) J' e# I( V2 ^) M
                            }. z% i7 p! g$ E, }
                    }1 p9 o5 M" {# D  Y
            }1 d& W' ~' R) B
    }
    ! l1 E  \4 _* u$ T; n2 Y. a- L

    该用户从未签到

    发表于 2014-7-11 16:25:27 | 显示全部楼层
    package For;
    : A# R$ Z; f' s% E8 o! H
    9 V: \  N0 ]5 B6 |$ dimport java.util.Scanner;1 p& a- j7 \9 [) N& `2 F# p
    /*
    9 R! V" T2 g# U7 U( P* V' _6 F, X) b * 计算1000以内的所有水仙花数。
    / C% U8 C* w: I% [" ` * 用户输入0到1000以内的某个数,
    1 I4 W/ Q* X0 E" [! E8 t * 系统输出这个范围内的所有水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),  R: V" r( k9 t0 O; U
    * 它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。=1+125+27' d* ]! b& o! M, }( u( h
    */
    % P. d$ b. n1 Y; V' @" f& W: ppublic class narcissus {/ |, v' I7 T! R4 Y* D; {
            public static void main(String[] args) {1 G" \/ R% K9 ~4 X$ P2 A
                    //计算水仙花的数量
    4 l- E! W/ @# F$ A                Scanner in=new Scanner(System.in);
      q: W5 E% E0 e: f, k                System.out.println("请输入查找水仙花的范围:0~");
    ( b  U4 X+ U: |                int max=in.nextInt();
    % e5 e$ G: q; c" B: f6 z' @                in.close();* {2 g) s2 p9 [( l0 m  g
                    for(int n=3;n<=max;n++){' |8 R6 ~0 |% f( t1 F3 e
                            //先判断n是否为水仙花数: s* b% ], i4 [; ^$ s* D- M3 m
                            int sum=0;
    3 k/ i' X8 G& G& D2 `                        for(int m=n;m>0;m/=10){
    1 [3 Q' {! b; Z) e7 E                                int v=m%10;
      A3 i1 G5 T7 J7 }                                sum+=v*v*v;: h4 d. u+ n/ E- ]* y& F
                            }3 F9 ~. T: A# H
                            if(n==sum){+ s  D! t3 k1 H; r
                                    System.out.print(n+" ");
    , ?' \" d+ R; R5 d4 C: E( x                        }
    2 F1 X$ }* s( g! Z: y& y                }5 q& y6 L$ M9 G4 q
            }- A  G! t% x' I# b2 Q& S7 G
    }
    6 y$ o1 q. c2 S, k

    该用户从未签到

    发表于 2015-1-26 11:18:28 | 显示全部楼层
    public class test {
      c; A6 X4 }2 A' W  e/ \        public static void main(String[] args) {/ Q; s0 g4 F) ^; m3 d/ R
                    int x, y, z, a = 0, b = 0;$ Y; r8 \/ A$ b0 N5 w1 t7 C' c# X
                    for (x = 1; x < 10; x++) {/ |' t/ \$ S5 r) C3 e. e0 T) j
                            for (y = 0; y < 10; y++) {- K: n- x$ z' v: g4 g' I2 Z
                                    for (z = 0; z < 10; z++) {
    % {% Z2 S" y, _: L) o                                        a = 100 * x + 10 * y + z;# j( d9 D9 g3 v
                                            b = x * x * x + y * y * y + z * z * z;
    & N. h7 V. T9 @5 \' O5 Q* m# k5 y# m                                        if (a == b) {
    : i) g# A- L8 w9 K& ]& _                                                System.out.println(a);
    / F+ o6 D2 i5 V# u  `# X2 c: C                                        }
    ! c" \: m' Y8 L, E& `; o# ]) Q5 {  U# }                                }6 D4 \- y0 _3 h! v
                            }  \! g" D- E7 G" \5 Z& U
                    }
    $ j0 J9 y3 y+ J        }9 u5 t* I" a: {# S
    }

    该用户从未签到

    发表于 2015-1-26 11:21:06 | 显示全部楼层
    public class test {: l' l' e  c+ t9 k, L) o
            public static void main(String[] args) {
    ) c5 q" [' H0 D( j. j4 Y                int x, y, z, a = 0, b = 0;
    3 w% c; i, _2 ]! p2 s. {4 @                for (x = 1; x < 10; x++) {# x) X9 B8 }: m0 s4 z
                            for (y = 0; y < 10; y++) {! X6 I7 o% v* r( C9 {( B9 Y
                                    for (z = 0; z < 10; z++) {
    ; N; i+ u6 z& q- C3 L                                        a = 100 * x + 10 * y + z;
    : Z  J6 M  R  w, n" Y% c+ O+ O; t                                        b = x * x * x + y * y * y + z * z * z;
    " U7 v5 Q) r1 S5 f+ A, n                                        if (a == b) {! Y% h2 g& [- @) e- C
                                                    System.out.println(a);
    6 y. m) j- g, M4 G0 N) b: a+ }                                        }( P) m1 l/ ^# l) ?& a$ _( j/ ]& @% `8 x
                                    }3 X1 b, O0 [* c3 ~1 L5 _
                            }
    * {" l& Y" P- T' L5 B4 d. f  D                }$ _+ n. X& a0 C* U
            }  A# x: y; C1 C! r6 @( u' P
    }
    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

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

    GMT+8, 2017-5-27 17:51 , Processed in 0.515266 second(s), 34 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

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