Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: grf1973

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

[复制链接]
发表于 2017-11-29 20:27 | 显示全部楼层
本帖最后由 上清宫主 于 2017-11-29 20:30 编辑

在数学分析
突破口在除5和除11(定义个数组a(0 to 9)记录用过的数字,在对应位置填1):
1、d4d5d6 能被5整除说明d6是0或5
2、d6d7d8能被11整除说明d6不可能是0,只能是5(因为d6若是0,则d7和d8只有相同才能被11整除)
     所以d6d7d8就只能是506、517、528、539、(550舍去)、561、572、583、594八个数
3、把上面的八个数中的某个数k拿出来,将其右边两位取出并乘n=(k-500)*10 ,要找被13整除则需加上i=13-(n mod 13),看i在k中吗,如果在,则K舍去,否则k*10+i保留起来。最终能保留下来的,少于8个
4、用同样的办法找被17整除的数。
最终保留下来的,比第3步更少了

这样就把d6至d10排好了,下面在余下没用到的数字中来排前面的:
5、d2d3d4能被2整除,所以先把偶数填到d4去
6、余下只有4个数没用到,空位也只有4个了,就暴力解决:4选4的全排列,找其中满足被3、7整除的数





这样一来,不用编程,草稿纸上都凑得出来。

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2017-11-29 20:33 | 显示全部楼层
上清宫主 发表于 2017-11-29 20:27
重在数学分析
突破口在除5和除11(定义个数组a(0 to 9)记录用过的数字,在对应位置填1):
1 ...

这枝剪得精彩!
回复

使用道具 举报

发表于 2017-11-29 20:54 | 显示全部楼层
思想没贯穿,第6步根本不必暴力。d6d7都定了,在余下四个数中一一选填到d5看能否被7除,被3除也一样
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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