Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1536|回复: 8

[VBA] 用VBA解欧拉计划题目(30)

[复制链接]
发表于 2017-11-7 10:51 | 显示全部楼层 |阅读模式
第30题:各位数字的五次幂
令人惊讶的是,只有三个数可以写成它们各位数字的四次幂之和:
1634 = 1^4 + 6^4 + 3^4 + 44'
8208 = 8^4 + 2^4 + 0^4 + 8^4
9474 = 9^4 + 4^4 + 7^4 + 4^4
由于1 = 14不是一个和,所以这里并没有把它包括进去。
这些数的和是1634 + 8208 + 9474 = 19316。
找出所有可以写成它们各位数字的五次幂之和的数,并求这些数的和。

遍历即可。结果是:443839


excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-11-7 11:21 | 显示全部楼层
大侠能否把欧拉题目的合格判定标准也提示一下,我想看看能否达标(正确性当然不用说,其他比如运行时间等)
回复

使用道具 举报

发表于 2017-11-7 12:48 | 显示全部楼层
经测试,230000开始的数值,各位数的5次方之和都不会大于本数。
  1. Sub bbb()
  2. Dim i&, s$, j&, n, s1$, n1
  3. For i = 10 To 230000
  4.   s = i: n = 0
  5.   For j = 1 To Len(s)
  6.     n = n + Mid(s, j, 1) ^ 5
  7.   Next j
  8.   If n = i Then
  9.     s1 = s1 & "+" & i
  10.     n1 = n1 + i
  11.   End If
  12. Next i
  13. MsgBox Mid(s1, 2) & "=" & n1
  14. End Sub
复制代码
回复

使用道具 举报

发表于 2017-11-7 14:00 | 显示全部楼层
这个叫做【自幂数】或称【水仙花数】。即有n位数m,每一个数字的n次幂之和=这个数本身m

你就只会暴力计算?

如果是要列出n=10位数的自幂数、或者更多位数呢?

下面是所有3-11位的自幂数。我的算法是0.8秒。……如果直接暴力遍历计算,恐怕1个小时都不够吧?

370
407
153
371
8208
1634
9474
93084
92727
54748
548834
9800817
4210818
1741725
9926315
24678050
24678051
88593477
146511208
912985153
472335975
534494836
4679307774
32164049650
40028394225
42678290603
49388550606
32164049651
94204591914
44708635679
82693916578
回复

使用道具 举报

 楼主| 发表于 2017-11-7 14:07 | 显示全部楼层
大灰狼1976 发表于 2017-11-7 11:21
大侠能否把欧拉题目的合格判定标准也提示一下,我想看看能否达标(正确性当然不用说,其他比如运行时间等)

没有判定标准,只需要提交结果。不管你用什么办法计算出来,哪怕是掰手指头算出来的也行。
但理论上,每题应该都能在1分钟内跑出结果。如果不能,你的算法一定能优化。
回复

使用道具 举报

发表于 2017-11-7 14:41 | 显示全部楼层
是的,发现这些题对我来说还是比较难的,看来我只会做应用题,而欠缺数学理论知识。
回复

使用道具 举报

 楼主| 发表于 2017-11-7 15:46 | 显示全部楼层
香川群子 发表于 2017-11-7 14:00
这个叫做【自幂数】或称【水仙花数】。即有n位数m,每一个数字的n次幂之和=这个数本身m

你就只会暴力计 ...

题目没有n位的n次方的“双n”的限制。
各组数分别是:
4150
4151
54748
92727
93084
194979

回复

使用道具 举报

发表于 2017-11-7 16:08 | 显示全部楼层
本帖最后由 香川群子 于 2017-11-7 16:49 编辑
grf1973 发表于 2017-11-7 15:46
题目没有n位的n次方的“双n”的限制。
各组数分别是:
4150

嗯,也就是说,位数不限,但固定为n^5次幂。

那么,位数的检查范围为2-6(因为7个9组成的数=7*9^5=413343只是6位数)

递归计算结果 0.02秒:

4150
145
4151
1145
93084
3489
92727
22779
54748
44578
194979
147999

回复

使用道具 举报

发表于 2017-11-7 16:52 | 显示全部楼层
按数字组合,只需检查7997个数字。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-18 23:38 , Processed in 1.069247 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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