找回密码
 欢迎注册
查看: 41716|回复: 13

[讨论] 再来个数字问题

[复制链接]
发表于 2010-6-17 15:27:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
求1,2,3,4,5,6,7,8,9,0的某个排列, 10个数字每个只有且必有1个 如果在排列中加入1到多个乘号,一个等号 被乘号和等号分隔的相邻数字组成整数,且保证得到的乘法结果正确,问 1、是否存在这种等式 2、列出全部的这种等式 =================================== 即多个整数组成的连乘式两边有且恰好有1,2,3,4,5,6,7,8,9,0的10个数字,每个数字出现1次
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-17 19:02:50 | 显示全部楼层
a*b=c: Sub Test() Dim i&, j&, k&, s$ For i = 2 To 98 For j = 10234 \ i To 98765 \ i k = i * j s = i & "*" & j & "=" & k If Len(s) = 12 Then For m = 0 To 9 If InStr(s, m) = 0 Then Exit For Next If m = 10 Then Debug.Print s End If Next j, i End Sub 可得到: 3*5694=17082 3*6819=20457 3*6918=20754 3*8169=24507 3*9168=27504 4*3907=15628 4*7039=28156 4*9127=36508 6*5817=34902 7*3094=21658 7*4093=28651 7*9304=65128 7*9403=65821 27*594=16038 36*495=17820 39*402=15678 45*396=17820 46*715=32890 52*367=19084 54*297=16038 63*927=58401 78*345=26910
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-17 19:19:22 | 显示全部楼层
如果只有一个乘号,就是以下的形式: a*b=c 那么必有a mod 3=0 且 b mod 3=0,或 a mod 3=1 且 b mod 3=1。 更严格一点: (a mod 9) * (b mod 9)只有以下形式 0*0 1*4 3*6 4*1 6*3 7*7
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-17 19:35:43 | 显示全部楼层
对于乘号不限制,我有个想法: 如果等号右边不存在乘号。那么设等号右边的数为S, 那么S的位数必定是4位数或5位数。 可以穷举所有的S,对S进行因数分解,所分解成的若干个因数加上S本身,刚好满足题目的要求就是一解。 ------------------------------------------- 对于等号两边都有乘号的: 那么两边乘积的结果设为S,那么S必定是3位数、4位数或5位数 可以对S进行因数分解,两种因数分解的结果刚好遍及所有的10个数,那么就是1解。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-17 21:31:32 | 显示全部楼层
一共找到59个解: 4830=1×2×5×7×69 6970=1×2×3485 7056=1×3×24×98 7056=1×3×8×294 7096=1×2×3548 7290=1×3×5×486 7690=1×2×3845 7830=1×6×29×45 8370=1×2×9×465 8596=2×14×307 8652=1×4×7×309 8790=2×3×1465 8970=1×26×345 9076=1×2×4538 9360=1×5×24×78 9360=2×4×15×78 9370=1×2×4685 9380=2×5×14×67 9670=1×2×4835 9706=1×2×4853 9720=1×3×5×648 9730=1×2×4865 9870=2×3×1645 10752=3×4×896 12780=4×5×639 14760=5×9×328 14820=5×39×76 15628=4×3907 16038=27×594 16038=54×297 16704=9×32×58 17082=3×5694 17820=36×495 17820=45×396 17920=8×35×64 18720=4×5×936 19240=8×37×65 20457=3×6819 20574=6×9×381 20754=3×6918 24056=8×31×97 24507=3×8169 25803=9×47×61 26180=4×7×935 27504=3×9168 28156=4×7039 28651=7×4093 30296=7×8×541 30576=8×42×91 30752=4×8×961 31920=5×76×84 32760=8×45×91 32890=46×715 34902=6×5817 36508=4×9127 47320=8×65×91 65128=7×9304 65821=7×9403 58401=63×927
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-18 13:38:49 | 显示全部楼层
不止59个解吧,起码少了四个 7*3094=21658 39*402=15678 52*367=19084 78*345=26910
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-18 14:06:16 | 显示全部楼层
3*5694=17082 3*6819=20457 3*6918=20754 3*8169=24507 3*9168=27504 4*3907=15628 4*7039=28156 4*9127=36508 6*5817=34902 7*3094=21658 7*4093=28651 7*9304=65128 7*9403=65821 27*594=16038 36*495=17820 39*402=15678 45*396=17820 46*715=32890 52*367=19084 54*297=16038 63*927=58401 78*345=26910 1*2*3485=6970 1*2*3548=7096 1*2*3845=7690 1*2*4538=9076 1*2*4685=9370 1*2*4835=9670 1*2*4853=9706 1*2*4865=9730 1*26*345=8970 2*3*1465=8790 2*3*1645=9870 2*14*307=8596 3*4*896=10752 4*5*639=12780 4*5*936=18720 4*7*935=26180 4*8*961=30752 5*9*328=14760 5*39*76=14820 5*76*84=31920 6*9*381=20574 7*8*541=30296 8*31*97=24056 8*35*64=17920 8*37*65=19240 8*42*91=30576 8*45*91=32760 8*65*91=47320 9*32*58=16704 9*47*61=25803 1*2*9*465=8370 1*3*5*486=7290 1*3*5*648=9720 1*3*8*294=7056 1*3*24*98=7056 1*4*7*309=8652 1*5*24*78=9360 1*6*29*45=7830 2*4*15*78=9360 2*5*14*67=9380 1*2*5*7*69=4830 共63个
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-18 19:18:09 | 显示全部楼层
不止59个解吧,起码少了四个 7*3094=21658 39*402=15678 52*367=19084 78*345=26910 qianyb 发表于 2010-6-18 13:38
检查发现我在2楼也贴出这几组了。郁闷。有没有快速的计算方法?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-19 07:47:05 | 显示全部楼层
呵呵,可能是你后来程序改错了 我本来只计算了一个乘号的,发现有22组,跟你的不一样,就全部计算了一次 我是先确定有那几种组合可以成立式子,然后再计算的,如一个乘号时,只有口X口口口口=口口口口口,口口X口口口=口口口口口成立,这样代码多一些,速度应该快一些了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-19 15:04:50 | 显示全部楼层
无心人这个题目我们可以通过动态规划将所有子集合能够产生的数据集计算出来,然后对于两个互补的子集合,如果它们对应的数据集有交集,那么就对应一个解。 比如对于每个单数据,它们对应的数据集就数据本身(0可以不用考虑) 然后对于两个数据的集合,比如{2,3},它们对应的数据集包含{23,32,6} 类似的,对于k个数字产生的数据集,首先需要包含这k个数排序产生的数字,然后在包含将这k个数据划分成两个子集合,将它们对应的数据集的数据的乘积也包含在里面。 通过这种方法,可以将所有的1024个数据集都计算出来。 不过产生的总数据量会有点大,内存不一定保存的下,最好将中间数据保存在外部文件中
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-12-22 15:01 , Processed in 0.026555 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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