找回密码
 欢迎注册
楼主: jmyhyu

[提问] 从1-33中,任取6个数,要求和为102,共有几种取法?

[复制链接]
发表于 2010-4-21 20:42:39 | 显示全部楼层
感觉在mathematica中还可以用IntegerPartition,但一时未找到排除重复元素的良方。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-21 22:31:24 | 显示全部楼层
IntegerPartitions[102, {6}, Range[33]] 不排除6个数中有相同者。减小数字输出一下就可看到了。

In[1]:= IntegerPartitions[15, {3}, Range[9]]
Out[1]= {{9, 5, 1}, {9, 4, 2}, {9, 3, 3}, {8, 6, 1}, {8, 5, 2}, {8, 4, 3}, {7, 7, 1}, {7, 6, 2}, {7, 5, 3}, {7, 4, 4}, {6, 6, 3}, {6, 5, 4}, {5, 5, 5}}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-21 22:34:49 | 显示全部楼层
要从数学上探讨这个问题,最好是把它一般化,所以我专起了一帖。
http://bbs.emath.ac.cn/viewthrea ... %26amp%3Btypeid%3D8
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-21 23:11:11 | 显示全部楼层
经过努力,找到了一个效率不错的方法

  1. Select[DeleteDuplicates /@ IntegerPartitions[102, {6}, Range[33]],
  2.    Length[#] == 6 &] // Length // Timing
  3. (*DeleteDuplicates 可以替换为Union*)
复制代码
感觉一定还有其他方法,希望大家继续探索。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-22 08:17:06 | 显示全部楼层
http://bbs.emath.ac.cn/thread-2251-1-1.html中的算法变换一下就可以了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-22 09:11:44 | 显示全部楼层
15# qianyb


好像不是一回事吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-22 10:11:03 | 显示全部楼层
只不过取的个数一样吧,一个是固定取几个数的加等于某个数,一个是不固定取几个数的和小于等于某个数
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-24 23:42:14 | 显示全部楼层
递归即可,我以前写过一个VB代码:http://blog.csdn.net/northwolves/archive/2007/12/03/1912809.aspx
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-24 23:48:01 | 显示全部楼层
双色球和值如下:
21      1
22      1
23      2
24      3
25      5
26      7
27      11
28      14
29      20
30      26
31      35
32      44
33      58
34      71
35      90
36      110
37      136
38      163
39      199
40      235
41      282
42      331
43      391
44      454
45      532
46      612
47      709
48      811
49      930
50      1055
51      1202
52      1353
53      1528
54      1710
55      1916
56      2130
57      2372
58      2619
59      2896
60      3181
61      3495
62      3816
63      4170
64      4527
65      4918
66      5314
67      5741
68      6171
69      6635
70      7096
71      7591
72      8083
73      8604
74      9118
75      9663
76      10193
77      10751
78      11293
79      11856
80      12398
81      12962
82      13495
83      14046
84      14565
85      15094
86      15586
87      16088
88      16543
89      17004
90      17418
91      17830
92      18190
93      18549
94      18847
95      19141
96      19376
97      19599
98      19760
99      19912
100      19995
101      20068
102      20076
103      20068
104      19995
105      19912
106      19760
107      19599
108      19376
109      19141
110      18847
111      18549
112      18190
113      17830
114      17418
115      17004
116      16543
117      16088
118      15586
119      15094
120      14565
121      14046
122      13495
123      12962
124      12398
125      11856
126      11293
127      10751
128      10193
129      9663
130      9118
131      8604
132      8083
133      7591
134      7096
135      6635
136      6171
137      5741
138      5314
139      4918
140      4527
141      4170
142      3816
143      3495
144      3181
145      2896
146      2619
147      2372
148      2130
149      1916
150      1710
151      1528
152      1353
153      1202
154      1055
155      930
156      811
157      709
158      612
159      532
160      454
161      391
162      331
163      282
164      235
165      199
166      163
167      136
168      110
169      90
170      71
171      58
172      44
173      35
174      26
175      20
176      14
177      11
178      7
179      5
180      3
181      2
182      1
183      1
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-29 22:34:27 | 显示全部楼层
直接从1到33中取6个不同的数,有C(33,6)种取法,然后求和判断是否为102,是的话,N=N+1.
方法比较笨。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-5-3 14:12 , Processed in 0.061046 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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