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

JAVA中文站

 找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

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

    [LV.7]常住居民III

    发表于 2012-9-13 09:46:32 | 显示全部楼层 |阅读模式
    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。# ~7 \9 _( P0 T
    " w1 q  F3 y7 y) d' l" P
    要求:1、测试通过;
      N4 {! Z3 {; Y" m9 l2 ~      2、界面友好;
    7 Q0 H: x6 d, d+ f7 R( m4 v      3、有详细的注释;

    该用户从未签到

    发表于 2012-9-14 16:47:30 | 显示全部楼层
    public class Narcissus {
    , h% @8 E9 r3 v. d, {        public static void main(String[] args) {
    0 h, ]' W* n; ]. {1 t# [
    $ g4 `2 H3 K( I" A. O& J0 s                for (int i = 1; i < 10; i++)- I& B" }) j7 A( W
                            for (int j = 1; j < 10; j++)
    3 t6 a+ j& e  d+ B; I" E                                for (int k = 1; k < 10; k++)& m6 u% ~: W5 v% m4 H5 D' t
                                            if ((i * 100 + j * 10 + k) == ((i * i * i) + (j * j * j) + (k * k * k)))
    " _6 d" H3 x! ^9 V                                                System.out.println(i + "" + j + "" + k);
    $ J' _. F4 _9 q2 ~( I6 {        }
    4 A% i# K, @0 Z) [7 J( x4 d! d; K3 ]' M: c& g* C' G$ ?! o4 H6 ^+ j
    }
    2 h8 O# [. X8 A

    评分

    1

    查看全部评分

    该用户从未签到

    发表于 2012-9-23 09:57:15 | 显示全部楼层
    package com.corejava.test;
    $ [! X  Z" C, p2 @
    ) s: @7 U; C, spublic class waterflowernumber {$ y- l9 H' w( a! Y8 g+ A
    6 j5 c7 o2 D$ T+ M3 n# x
            public static void main(String[] args) {0 n8 Z" }5 b9 [6 j, _
                    waterflowernumber d = new waterflowernumber();
    / ?$ W: c2 }4 A1 R                d.printDaffodil();8 D5 I1 N! `# Q: H0 Y- s
            }
    + @8 p0 \& n! f) `! `' _! }$ w        /*********! s6 E( j5 I" {
             * 打印100~1000之间的所有水仙花数
    - D# |- o; p* A4 H' L         */
    * p$ ~& P3 V! `$ g9 B3 u" C- K) y        public void printDaffodil(){1 y7 c- o7 b+ G8 H
                    for(int i=1000;i<10000;i++){
    ( H$ ]* R$ w7 d/ U                        /*if(isDaffodil(i)){1 c, u- K7 P5 Z1 |
                                    System.out.printf("%-5d",i);
    ! P' D' C1 ^  V3 L* _' }                        }*/
    8 W! a8 [( h& k% W                        if(isDaffodil2(i,4)){3 c# Y9 p# d+ P
                                    System.out.printf("%-5d",i);
    ( H  F5 m  n, Y' j# [$ h( T                        }% G% v# N  Z' G  {6 J* v
                    }+ I) Q( W& ?, l& |$ n5 L
            }5 q0 ~# W8 ~) C7 }$ m" P# V
            /*******************  m& `" ]; I) r
             * 判断给定的数是否是水仙花数
    1 k( K5 h3 ~% y% p         * - b$ K: _3 s% J- w
             * @param data
    1 ~& B+ R2 s( P. \/ l4 p         * @return
    ; z" h* R% u% S$ l" [: R         */
    % X! y, {, u* g! b5 b        public boolean isDaffodil(int data){' j. U( Q# Z3 d2 z
                    //做边界判断
    * |. H. o* z: ~1 W/ @. B% d                if(data < 100){/ f( g5 S6 ?% I+ j7 f2 }
                            System.err.println("参数不合法:"+ data);1 W0 Y0 x" f5 [4 Z6 ^' T' u/ _+ B
                            return false;  z( |6 Z" w' ]7 O3 f9 y6 Z, U8 V
                    }. o# `* L6 ~1 j
                    //1.得到百位数; ~% p( n# M  y9 ]. `, c8 b
                    int b = data / 100;
    / C& g% J+ w% Y- y+ Z                //2.得到十位数
    / x" q! K# [4 ^8 l                int s = data % 100 / 10;
    * \& S( l7 f& i/ o' R                //3.得到个位数* M6 F! S6 O/ {, G' O3 q
                    int g = data % 10;8 @, Q0 M8 a- o: Q- \* }
                    //4.做判断
    , n* P. G& d, y* ^                if(Math.pow(b,3)1 j, V; J, p: Z4 a! b
                                    +Math.pow(s,3)
    6 X1 l1 p2 m4 I1 i                                +Math.pow(g, 3) == data){, o# O3 a0 f+ a$ L5 ^  I
                            return true;
    7 T% I2 }" i) }# E9 j: h) f                }else{6 u& x1 g8 D3 k( y
                            return false;9 Z/ r3 z  k9 M& P1 o# L7 r5 Z: `
                    }
    * M4 l" J2 x+ B  ~9 X        }
    2 \5 w) z: A/ a9 O$ R; a        // 23422, 5
    " T" `, @& D3 a' Q' N        public boolean isDaffodil2(int data,int n){7 h$ u, ?: L- _5 }3 A8 _  k
                    int result = 0; //保存各个位数的N次幂之和" Z# d) N0 L4 Z# j. h
                    final int temp = data; //保存data,以便后面进行比较
    + |& U) n: P, L3 B% S3 ~                for(int i=n-1;i>=0;i--){
    ' `  [* r. X/ b                        int m = (int)(Math.pow(10,i));* G' M8 k) q7 X+ z9 N3 ]
                            //求出每一位: i# a5 ]) @2 M  M% H2 p3 I
                            int bit = data / m;
    + j' ]3 ~. l8 p1 c" g                        //把数去掉最高位
    8 k% K* x7 P6 M+ a5 o8 `                        data %= m;+ Y+ C' ]/ L  o* @+ b$ w
                            //要把每一位数的n次幂相加.
    4 \8 A7 `$ Y3 @7 f& G* n" [                        result += Math.pow(bit, n);* J5 i6 o* J3 z7 m% {7 C" J* w
                    }! Q- A! p3 E6 o! D
                    //比较
    5 {4 b, W! ^8 [% f# P  f! |9 g+ ~                if(result == temp){
    1 ]. b- a7 n4 }1 n; X  @                        return true;
    0 i- L) ?+ k5 {: L. `                }else{
    7 G6 j' A, M2 i' A' i+ g                        return false;, Q( J0 c7 u5 o0 V" @
                    }
    ( U" ]' k- y+ y/ i* g/ R        }/ ?0 A" G: ]7 E9 i& \' t" i" h2 M
    }

    该用户从未签到

    发表于 2014-7-10 21:58:11 | 显示全部楼层
    我是新手,这是我的思路,应该是最简单的思路!谢谢1 K0 c5 s5 z. b$ R# ?4 M
    public class ShuiXianFlower {& U8 X$ T& M+ d; T* z( Q
            public static void main(String[] args) {
    7 d% K# H8 K% L+ u+ \                //题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,
    ! j0 _0 C4 \* c/ j" X                //其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 "
    2 q# h) Q' F7 V& @4 s' u                result();7 j5 p9 Z+ M0 e3 g  g- p
            }
    " I! u+ i3 l; g; D. j
    ( R) O- ~  p; g* O        private static void result() {4 w& F# p) _! y* T
                    for(int i=100;i<1000;i++)
    & r3 c' g8 O  W; U/ x                {
    8 o+ ~4 R/ w7 ^1 `                        //求百位数:i/100 求十位数:i/10%10 求个位数:i%10
    ) b5 l7 y0 q8 E4 W% R! @8 m                        //如果相等 则输出
    2 D& b4 ?9 C$ Q$ [: Y                        if(i==((Math.pow(i/100,3))+(Math.pow(i/10%10,3))+(Math.pow(i%10, 3))))9 Q$ D; h* i  A$ q" k
                            {
    6 `* p7 ?' @8 B" r" O                                System.out.println("水仙花数:"+i);
    8 K/ }# s) w+ B! |; {1 y                        }. L  L: B& O4 I" z' u$ C! b; n
                    }
    " Y% w% }/ \# S" w        }
    8 ^) e7 a% v. [; [2 O1 J) |; E) i}
    ( }8 _9 X7 z' C% p1 K! r( a

    该用户从未签到

    发表于 2014-7-11 16:25:27 | 显示全部楼层
    package For;
    ! a( z/ v4 R. }3 M4 y
    4 |) c5 Z: i. K( n# Z6 r- Nimport java.util.Scanner;1 o1 I% m" n& s
    /*
    , v9 r8 I, D, i6 s, U' Y4 r * 计算1000以内的所有水仙花数。4 w# d" s  y/ x; C  o4 ^, p* @
    * 用户输入0到1000以内的某个数,
      h2 G$ J* C9 Z6 m8 J * 系统输出这个范围内的所有水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),
    8 ~2 D3 ~& j4 l+ _/ G1 B* M) L* h$ H * 它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。=1+125+27
    ! \  S+ X+ M$ }  K, \: v */
    6 Z# O$ r5 {# k) o0 qpublic class narcissus {8 G. \7 `( J3 ~5 I6 j
            public static void main(String[] args) {7 R# D" A. f% g9 {) Q9 b7 y4 K
                    //计算水仙花的数量
    " C( ?! y" }, M* I                Scanner in=new Scanner(System.in);
    & \4 ~; Y+ j( v6 X9 U6 @                System.out.println("请输入查找水仙花的范围:0~");
    " \0 t& x- S4 \; C+ j& E                int max=in.nextInt();
    " n0 E. f" M0 ]8 h                in.close();
    $ F! S8 \! ~1 J" u                for(int n=3;n<=max;n++){
    ' v6 F( g  P' A3 y  H                        //先判断n是否为水仙花数3 K4 T7 b: N# _1 u: O( \. D, m9 f
                            int sum=0;
    3 q! S7 s. g. ]& |8 K3 y                        for(int m=n;m>0;m/=10){
    & [& h5 I7 I# X9 t+ z! F# q                                int v=m%10;
    0 \' N, F* I% _2 x9 {  o( Z+ C                                sum+=v*v*v;$ I! Q* d3 V% B& h) ]+ V  ^5 e
                            }
    . q* ^4 G# e5 C* v                        if(n==sum){: E) L% l3 }* x+ J1 E' |, Z# ?
                                    System.out.print(n+" ");- {9 Q$ _8 H! t$ @  X
                            }/ z0 v! e, b5 m) X: r8 ]- G; J
                    }3 i" H) _0 L+ N; E: a- O
            }& ?8 }, m! `- Y1 E
    }- y1 R5 q! N8 a& t

    该用户从未签到

    发表于 2015-1-26 11:18:28 | 显示全部楼层
    public class test {& h3 D% h& O  k) Z  s9 c+ p
            public static void main(String[] args) {, C- F8 A9 ?% D% @9 o
                    int x, y, z, a = 0, b = 0;' T5 R$ ^6 @- m4 [4 T/ @
                    for (x = 1; x < 10; x++) {% r4 Y$ J* o! `2 X
                            for (y = 0; y < 10; y++) {
    3 x) w" G% w( L0 e5 {                                for (z = 0; z < 10; z++) {* ^8 c; G1 Q% a5 G
                                            a = 100 * x + 10 * y + z;# Z" e$ j: L2 O; @& T
                                            b = x * x * x + y * y * y + z * z * z;
    4 X. ]7 S5 a; E1 R8 D                                        if (a == b) {( }2 v' i. `4 L3 _0 n
                                                    System.out.println(a);
    " t4 a+ T+ o) x1 B                                        }. C- B, n8 s6 M2 P
                                    }
    ( y1 g9 r- b- o3 b                        }
    . i( Y9 s9 Q: K5 n! M                }1 Y" k6 n9 k1 \
            }
    0 ^7 T1 t  Q9 i}

    该用户从未签到

    发表于 2015-1-26 11:21:06 | 显示全部楼层
    public class test {
    & s, G+ V& z) M# f& x% G        public static void main(String[] args) {
    + z4 O* J9 `& Y& X( P) }                int x, y, z, a = 0, b = 0;
    , N% Q5 d4 _0 @' r" x                for (x = 1; x < 10; x++) {
    + A, g' ]+ Y2 u                        for (y = 0; y < 10; y++) {# l  B) ~* z# Q8 F  m
                                    for (z = 0; z < 10; z++) {
    % G% J  C! N( p3 \                                        a = 100 * x + 10 * y + z;
    1 w: x+ t5 O2 V' h+ r/ |: z                                        b = x * x * x + y * y * y + z * z * z;
    5 `. H  t* p/ d2 W. c4 h& Z6 C$ |                                        if (a == b) {" h8 \4 [& V- o- t3 P
                                                    System.out.println(a);
    3 V3 A+ Q: `- N- w2 R- Q: v+ O- p, D                                        }. P# |+ X1 o7 T/ f5 J& m
                                    }
    & P8 c4 f* p5 E' |, \! p                        }
    4 s+ g& E  U/ Q% E8 N. \$ z                }2 F5 e  ?( r5 w2 |
            }' p/ y8 C6 K/ |1 J
    }
    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

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

    GMT+8, 2017-11-16 19:04 , Processed in 0.425986 second(s), 36 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

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