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

JAVA中文站

 找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

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

    [LV.7]常住居民III

    发表于 2012-9-13 09:46:32 | 显示全部楼层 |阅读模式
    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
    * ~, V. v1 c' Y9 f5 t! X" F9 _, f
    ) R) R( b+ o# O+ o; e要求:1、测试通过;- s" P* v, w" M, ^6 P1 o, G0 ?
          2、界面友好;8 n. K2 ^* w4 t5 Q' C" S/ w' i
          3、有详细的注释;

    该用户从未签到

    发表于 2012-9-14 16:47:30 | 显示全部楼层
    public class Narcissus {
    # X7 Y. |" Y: p, X; h        public static void main(String[] args) {( k0 i" f; X1 k& L, [% e
    $ V( a" s2 s. ^. W8 f
                    for (int i = 1; i < 10; i++)& h5 O' @5 P" i: Y) U8 E5 k
                            for (int j = 1; j < 10; j++)
    ) Y' i4 ]6 @* B+ t) t* S7 I                                for (int k = 1; k < 10; k++)
    6 l. R( h1 h) ]6 W                                        if ((i * 100 + j * 10 + k) == ((i * i * i) + (j * j * j) + (k * k * k)))6 B# t( t) [8 i( J, |, p
                                                    System.out.println(i + "" + j + "" + k);
    " P  K2 r* o: ]4 c        }2 L* R  l; ?" H, H4 b* [

    ; A8 J2 R6 l) ?1 r) m0 \* @, f}
    0 ^% k0 k* [3 g/ h

    评分

    1

    查看全部评分

    该用户从未签到

    发表于 2012-9-23 09:57:15 | 显示全部楼层
    package com.corejava.test;, g- e( Y) ]0 y  \3 t8 A: V) |

    7 f7 o* D5 @7 Jpublic class waterflowernumber {/ i& i( L  h5 d: y( n+ m, q  g

    - k+ }0 }" `+ \( W* C" h        public static void main(String[] args) {9 X& Q# a5 p0 U- ~+ T- H
                    waterflowernumber d = new waterflowernumber();, D% d5 I, q) X; I/ {3 ?
                    d.printDaffodil();
    & ^9 q8 Q% y2 L; j" X$ l        }
    9 N. x# u- G' u: E2 D' d# Y5 P. I: _        /*********6 e% V3 x" b/ _+ f, ]% V( d/ t
             * 打印100~1000之间的所有水仙花数: A( S& n6 L* \/ a
             */
    5 m9 _. P1 I+ X6 W/ z* e! u        public void printDaffodil(){
    9 ^4 z& ~. q; T5 S                for(int i=1000;i<10000;i++){/ B' H; v3 S2 C, r" Q% n
                            /*if(isDaffodil(i)){  ]# q. J1 n" t# F! |; q9 h
                                    System.out.printf("%-5d",i);: g# L: m; y/ u; V+ S. c+ x
                            }*/5 n# O1 K- g( B0 A
                            if(isDaffodil2(i,4)){4 e$ y# |$ ]* e6 Z
                                    System.out.printf("%-5d",i);7 O, _: A& \# F( h* j
                            }
    - t: p# }( C4 L8 ?4 ?                }
    # {* z; [) q. e# E1 _) |' o        }* E( N6 P* w( M. Y% S
            /*******************1 I4 F! s0 E: M. ~" A
             * 判断给定的数是否是水仙花数
    7 g# y$ |0 m3 \# J( x2 n1 `, F         *
    / y1 b( W8 G; ~& X         * @param data
    $ Q1 a% ?5 Q3 U: D- n0 U8 E3 I: l         * @return  X# k- e+ n  t$ b
             */$ H' K. Y( A8 |6 R: n8 `
            public boolean isDaffodil(int data){
    0 |" k8 ^+ F, z8 H                //做边界判断
    # \& O7 X" X" o/ f5 |3 {2 \                if(data < 100){6 L6 F! L# k& A/ v2 G# \2 g$ @
                            System.err.println("参数不合法:"+ data);
    ! k, g9 a; t- x" a* w                        return false;5 o* t4 o( j; A0 V% l* L
                    }
    2 o* A5 ]. h$ P8 a3 `                //1.得到百位数
    : L! P$ ]8 d/ S% c+ |4 f                int b = data / 100;2 D5 g) ~( U  j$ \7 l9 q, B3 z
                    //2.得到十位数
    4 a8 j( f$ v/ W0 d$ b                int s = data % 100 / 10;
    ! r4 y1 O$ \3 }3 s                //3.得到个位数
      s9 h# |3 k; S9 P) }3 g7 a( P                int g = data % 10;
    9 b5 X9 N8 k; L                //4.做判断
    - ^8 P% e( K' K9 T6 A: w                if(Math.pow(b,3)$ c; K0 M/ ^/ V5 R- W
                                    +Math.pow(s,3)
    0 x& h0 S( [! m: c' F- A                                +Math.pow(g, 3) == data){3 u- j( I) |8 ~4 y* F! Q
                            return true;
    + }. Z& \! a) Y+ j1 N                }else{; ]5 }- }0 j, q. }( E1 [
                            return false;
    7 V, A. i% I; q' m                }
    2 j5 R6 }# E1 f/ f/ O        }
    6 x" P7 h+ c1 G) b! `6 f0 C. b( h        // 23422, 55 N4 ?5 `7 Q: i
            public boolean isDaffodil2(int data,int n){# R( J6 A( t: x. p4 b0 w
                    int result = 0; //保存各个位数的N次幂之和
    + ?$ ]9 q% b/ z4 M" V. S. @; A. ?                final int temp = data; //保存data,以便后面进行比较  p5 F6 p6 {& U8 s
                    for(int i=n-1;i>=0;i--){: D- w5 x+ v7 V' N: c
                            int m = (int)(Math.pow(10,i));$ ?4 v: Q6 l+ V, k9 Q7 d
                            //求出每一位
    ' J, `7 a3 n& ?& G                        int bit = data / m;, G3 K/ Z( b: d
                            //把数去掉最高位$ l. E' k. \: j5 `7 A' P6 J
                            data %= m;
    ; t- k! s6 |( ~' I6 u                        //要把每一位数的n次幂相加.
    0 J0 }7 q1 W/ P6 d& c" g! T: {                        result += Math.pow(bit, n);
    ' n, ^8 W  J! G; ?* m  V                }6 I: U% Z5 Q, _1 w& o$ P# p
                    //比较, H/ n1 p( Y$ E1 C$ ]
                    if(result == temp){
    - ~/ j  Z: h! G0 B1 S, N6 p                        return true;3 g" m; r& P: Q* p6 p
                    }else{1 }8 l  `2 G0 n7 |; d0 p3 _# @
                            return false;
    5 b7 [* M- Q  v                }
    0 ^, k4 {' ^! Q3 ?" \5 `/ p7 E( l        }
    . k2 V, v8 O& L$ l0 b% p, q! G}

    该用户从未签到

    发表于 2014-7-10 21:58:11 | 显示全部楼层
    我是新手,这是我的思路,应该是最简单的思路!谢谢# o$ \: H4 l( C4 O
    public class ShuiXianFlower {% w; F, C# d9 T) `+ |7 I
            public static void main(String[] args) {, f% c9 N/ u$ d# y$ \8 m! j
                    //题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,
    % Y6 Q! n# P2 r# q( m                //其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ", v0 m6 }7 ~" b$ N0 D
                    result();' b' U( ]5 ^- i6 [7 E+ h- S& W
            }  G# W0 s9 ^7 u; g% M
    , W/ U5 ~2 Q  q- T/ }/ B
            private static void result() {
    5 B$ H% V; B: I+ ~                for(int i=100;i<1000;i++)% [! W" Q8 }% d+ m2 m+ c
                    {
    4 {$ V5 }4 l" J8 ~0 z: J1 e                        //求百位数:i/100 求十位数:i/10%10 求个位数:i%10
    # p7 S7 T4 K) V" a. E; P9 Y                        //如果相等 则输出( B8 Z* V- P7 C
                            if(i==((Math.pow(i/100,3))+(Math.pow(i/10%10,3))+(Math.pow(i%10, 3))))
    ' o5 p- W7 N- l; X1 ~                        {
    + T" |/ b5 z7 l  g0 Y! _  o$ r                                System.out.println("水仙花数:"+i);
    + j) j& l, p/ @3 z1 I1 s; s                        }
    8 W' l; C: P, T4 I# h( w1 O) l                }" B" `& _( J$ u( L* r1 ~
            }
    , p2 }6 i5 h4 K}* ^- ?) r) Y% v2 z2 n& c, J- A. ~

    该用户从未签到

    发表于 2014-7-11 16:25:27 | 显示全部楼层
    package For;0 c+ W1 R5 }# t) R5 w- l  V& {

    6 I% P' C0 E+ ?$ Y% Q1 Eimport java.util.Scanner;0 @& h8 d# {. X5 T1 S; h( \
    /*
    $ A0 }3 f( D" ?" Z8 O6 b- v" j * 计算1000以内的所有水仙花数。
    ; S- N- l3 U7 g% x * 用户输入0到1000以内的某个数,% M: H2 `$ k) i  R' M
    * 系统输出这个范围内的所有水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),
    2 V) V0 ]2 @/ n) o * 它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。=1+125+275 H7 l; N1 |9 i# S( d( m' w4 S: l% d
    */
    3 B( |9 A# W( G' r. k1 L  v8 Mpublic class narcissus {
    7 f# k  Q+ \0 B        public static void main(String[] args) {
    7 u  X2 d) {! [! S, z                //计算水仙花的数量' u: E5 D; @; u. E% o) S9 n
                    Scanner in=new Scanner(System.in);
    # e+ t6 O* I1 \& Y7 M                System.out.println("请输入查找水仙花的范围:0~");
    # k! R6 B* |3 D7 t; q                int max=in.nextInt();( @; t$ S( o& ~
                    in.close();
    7 B6 S; M2 Q9 n) c# U                for(int n=3;n<=max;n++){
    / |' Y. Q/ ?" i3 @0 I2 i                        //先判断n是否为水仙花数1 {- u, c+ Z( v" h: p+ q& M
                            int sum=0;9 N5 J: a' l9 ?2 z
                            for(int m=n;m>0;m/=10){- v: B( A# E/ }+ O2 N" P
                                    int v=m%10;* S& y/ O5 [* ?. r  U7 U
                                    sum+=v*v*v;
    ' x* B+ W8 K+ d( _" b                        }
    2 \0 W; B7 f% f- L. \7 w4 A+ T                        if(n==sum){( l# m4 x+ L5 e) n! m; A
                                    System.out.print(n+" ");; e: @, @' C: U+ @* J* t# m% ^
                            }- f+ @8 D& M' }, [+ Q
                    }5 m+ T! L* ]9 T5 B9 r! x
            }7 O$ G: q1 m' v' V+ j3 E
    }
    3 \5 x( }% N9 ]. f# E4 N* L: P0 \

    该用户从未签到

    发表于 2015-1-26 11:18:28 | 显示全部楼层
    public class test {
    0 j6 |, G+ p, H+ ]; b; o        public static void main(String[] args) {- @0 l! j5 w7 n9 e1 R' J7 ~
                    int x, y, z, a = 0, b = 0;, F8 m& X4 d4 d- ~
                    for (x = 1; x < 10; x++) {# v7 B' Q: w( n% ~9 Z
                            for (y = 0; y < 10; y++) {
    5 R& n) r! N9 G  G  k: ~8 z                                for (z = 0; z < 10; z++) {
      m7 ~( _1 s: s& l$ [                                        a = 100 * x + 10 * y + z;& l8 c" N" d* P& w
                                            b = x * x * x + y * y * y + z * z * z;
    , U  N) y+ B5 t& D" O: z                                        if (a == b) {
    ; O$ q4 n" p" g1 o/ F4 ?                                                System.out.println(a);
    ) q8 c) k, t5 K8 `                                        }1 `9 i7 j. @6 p* t1 r2 {$ D
                                    }
    * t8 V2 T( {, i( Y+ m: ^0 C2 |' v' W                        }: T2 g5 `& [  Q  S
                    }: J& H; v' t% B6 M7 c; }# S, [* D
            }; \" s" f6 R' V3 N
    }

    该用户从未签到

    发表于 2015-1-26 11:21:06 | 显示全部楼层
    public class test {
    * N/ F5 A% }1 @& w8 Q* z, E        public static void main(String[] args) {& `- j+ M/ D0 g! @2 i
                    int x, y, z, a = 0, b = 0;
    " L! b$ {  Q) x" j' q# M                for (x = 1; x < 10; x++) {
    & H% L& t7 F( C& y                        for (y = 0; y < 10; y++) {
    ; H, K5 k) M$ Z/ M% Z" m                                for (z = 0; z < 10; z++) {
    " A$ D5 Y0 F" c6 f                                        a = 100 * x + 10 * y + z;
    & `3 J9 @: u& J1 N$ U5 B                                        b = x * x * x + y * y * y + z * z * z;. K' z1 k' ]7 s- U8 N- k+ s
                                            if (a == b) {
    + s. U6 B( d+ k# _                                                System.out.println(a);0 M1 J- p; b- d. k) E
                                            }7 j: Z, ~2 h0 Y# Q1 u0 E2 Y, D
                                    }
    & x, |0 a! i" U0 c/ V- y                        }2 ~3 v& K! t% L
                    }6 E' W9 b; n5 t
            }
    5 ~! d/ u6 A: l3 m! [+ H}
    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

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

    GMT+8, 2017-7-25 00:04 , Processed in 0.476961 second(s), 34 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

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