首页 > 代码库 > 2017华为机试题--水仙花数

2017华为机试题--水仙花数

等了一个月终于等到华为给安排的实习生在线机试,把自己做的三道题记录了一下,也方便日后复习。这篇是第一题,没有什么特别的难度,经典的水仙花数题。

题目描述:水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。(例如:13+53+33=153),要求:输出1000范围内所有水仙花数及水仙花数之和。

输入描述:无

输出描述:1000以内所有水仙花数及总和。

输出例子:

第1个水仙花数:xxx

第2个水仙花数:xxx

第3个水仙花数:xxx

...

水仙花数总和为:xxx

 1 public class Main {
 2     public static boolean judge(int x) {
 3         int cpx = x;
 4         int n = ("" + x).length();
 5         int s = 0;
 6         while(x > 0) {
 7             int y = x % 10;
 8             s += (int)(0.5 + Math.pow(y, n));
 9             x /= 10;
10         }
11         return cpx == s;
12     }
13     public static void main(String[] args) {
14         int cnt = 0, s = 0;
15         for(int i = 100; i <= 1000; i++) {
16             if(judge(i)) {
17                 s += i;
18                 System.out.println("第" + (++cnt) + "个水仙花数:" + i);
19             }
20         }
21         System.out.println("水仙花数总和为:" + s);
22     }
23 }

 

2017华为机试题--水仙花数