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

等了一个月终于等到华为给安排的实习生在线机试,把自己做的三道题记录了一下,也方便日后复习。这篇是第一题,经典的水仙花数题,一定要审清题目,不要一遇到机试题上来就写输入语句,这道题目就没有要求输入!水仙花数的思想也很经典,在其他地方也会用到其中的细节,mark一下。

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

输入描述:无

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

输出例子:

第1个水仙花数:xxx

第2个水仙花数:xxx

第3个水仙花数:xxx

...

水仙花数总和为:xxx

 1 public class ShuiXianHua {
 2     public static void main(String[] args) {
 3         int count=0,sum=0;
 4         for(int i=100;i<1000;i++)
 5         {
 6             if(judge(i))
 7             {
 8                 System.out.println("第"+(++count)+"个水仙花数:"+i);
 9                 sum=sum+i;
10             }        
11         }
12         System.out.println("水仙花数总和为:"+sum);
13     }
14     public static boolean judge(int x)
15     {
16         int cpx=x; 
17         int n=(""+x).length();          //将数字转化为字符串,方便计算数字的长度
18         int s=0;
19         while(x>0)                     //注意while和if不能混淆使用,if只计算1次,while不满足条件才跳出循环,否则一直运算
20         {
21             int m=x%10;               //取余:获取末位数
22             s+=(int)Math.pow(m, n);  //Math.pow是double类型的,需要进行类型转换,转换成int类型
23             x=x/10;                 //丢掉末位数,继续运算     
24         }
25         return cpx==s;
26     }
27 }

 

posted @ 2017-04-09 09:48  小乔乔乔要加油  阅读(1074)  评论(0编辑  收藏  举报