输出所有“水仙花数”高手请进
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输出所有“水仙花数”高手请进相关的知识,希望对你有一定的参考价值。
所谓“水仙花数”是一个3位十进制数,该数的各位数字立方之和等于该数本身.例如,153是一个水仙花数,因为1*1*1+5*5*5+3*3*3=153
参考技术A 三位的水仙花数共有4个:153,370,371,407;四位的水仙花数共有3个:1634,8208,9474;
五位的水仙花数共有3个:54748,92727,93084;
六位的水仙花数只有1个:548834;
七位的水仙花数共有4个:1741725,4210818,9800817,9926315;
八位的水仙花数共有3个:24678050,24678051,88593477
……
……
使用高精度计算,可以得到超过INT类型上限的水仙花数:
5: 93084
5: 92727
5: 54748
6: 548834
7: 9800817
7: 4210818
7: 1741725
7: 9926315
8: 24678050
8: 24678051
8: 88593477
9: 146511208
9: 912985153
9: 472335975
9: 534494836
10: 4679307774
11: 32164049650
11: 40028394225
11: 42678290603
11: 49388550606
11: 32164049651
11: 94204591914
11: 44708635679
11: 82693916578
14: 28116440335967
16: 4338281769391370
16: 4338281769391371
17: 35875699062250035
17: 21897142587612075
17: 35641594208964132
19: 1517841543307505039
19: 3289582984443187032
19: 4929273885928088826
19: 4498128791164624869
20: 63105425988599693916
21: 449177399146038697307
21: 128468643043731391252
23: 27907865009977052567814
23: 35452590104031691935943
23: 27879694893054074471405
23: 28361281321319229463398
23: 21887696841122916288858
24: 174088005938065293023722
24: 239313664430041569350093
24: 188451485447897896036875
(为环保起见,24位以上的水仙花数略)
理论上,最大的水仙花数不超过34位。 参考技术B void main()
int a,b,c,d;
a=100;
while(a<1000)
b=a/100;
c=a%10;
d=a%100/10;
if(a==b*b*b+c*c*c+d*d*d)
printf("%d\n",a);
a++;
本回答被提问者采纳 参考技术C 你想问什么?
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 }
以上是关于输出所有“水仙花数”高手请进的主要内容,如果未能解决你的问题,请参考以下文章
编程输出1000以内的所有水仙花数,所谓水仙花数是指一个3位数,其各位数字的立方和等于其本身
输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为153=1*+5*+3