急求一个求和算法!急急急!!

时间:2021-07-22 17:15:17
求60个小于100大于等于0的数相加,其和等于1000的组合!!

16 个解决方案

#1


是求60个这样的组合,还是求一个组合将60个数相加?

#2


1+2+……+60就比1000大了

#3


但"1000的组合"又等于多少呢?

#4


又: "小于100大于等于0"的60个数是否允许重复?

#5


说不定是小数呢?呵呵

#6


按照题设,在[0,100)内,任意取n个Xi,且Xi不重复,(Xi是整数),Sn=1000 (n=60)跟本就不成立,因为0....59的和>1000了
除非Xi是小数,要么可以重复
少条件啊兄弟

#7


因该是可重复数问题

#8


重复的话,有无穷多解啊,楼主!!!!耍我们啊!!!!

#9


这好象是不定方程:
x[1]+x[2]+...+x[60]=1000(0<=x[i]<100)
解的个数(不按次序)

#10


应该是60个组合,而不是60个数。
其实也好实现
从大的开始
100+99+98+97+.....+91,这样应该是955,还差45。
1+44
2+43



22+23
这样就有22个了
把91改成90,还剩46
1+45
2+44



22+24
又22个了。
再把90改成89。
这不就够了嘛。。。

#11


不一定要把所有的组合都求出来,通过计算的方法是可以得出这个数的,因为楼主要得仅仅是这个数而已。
因为是在0-99间取数,我们可以断定最多有49个0,最少0个0;最多10个99,最少0个99;……
建立相应的组合,在于以某个数作为参照对其它的数进行计算,由于每次仅开放一个差值表达式,因此,这个数就简化为简单的加法形式,而且不用担心会出现重复情况。
那么,怎么划分级差呢?1000由60个小于100的数组成可以看成10组100由6个小于100的数组成和10个99组成最大数时的情况。这样的解是一个很简单的问题,我在这里就不赘述了。

#12


真看不懂啊。

#13


看不懂?可能使我没说清楚:
先看看10个99用尽后的情况:1000-10*99 = 10
10用0-99间的数组成无非就33种:(111111111)(111111112)(11111113)(1111114)(11111122)(111115)(1111123)(11116)(111124)(1111222)(111133)(1117)(11152)(11143)(111322)(118)(1162)(1153)(1144)(11422)(11332)(112222)(19)(172)(163)(154)(1522)(1432)(1333)(13222)(\10)
60个0-99的数加起来和为1000就可以简化为10*(6个0-99数加起来和数为100)+(最大数用尽情况-每组都使用最大数99的情况)
=>> 10*(6个0-99数加起来和数为100)+31
6个0-99数加起来和数为100,这个问题应该不算很难了吧?

#14


对不起刚才那个式子有问题:
60个0-99的数加起来和为1000就可以简化为(6个0-99数加起来和数为100)^10+(最大数用尽情况-每组都使用最大数99的情况)
=>> (6个0-99数加起来和数为100)^10+31

#15


呵呵,UP!
不会无限个的!
如果要求所用的数可以相等的话,可以用10-1000个数,60个这样的组合比较好找,1-99中两两相加等于100的有49种,49种中选10种出来可有好多啊!

#16


不好意思,昨晚看花眼了,应该是:
==>>C_(6个0-99数加起来和数为100)^10+31

#1


是求60个这样的组合,还是求一个组合将60个数相加?

#2


1+2+……+60就比1000大了

#3


但"1000的组合"又等于多少呢?

#4


又: "小于100大于等于0"的60个数是否允许重复?

#5


说不定是小数呢?呵呵

#6


按照题设,在[0,100)内,任意取n个Xi,且Xi不重复,(Xi是整数),Sn=1000 (n=60)跟本就不成立,因为0....59的和>1000了
除非Xi是小数,要么可以重复
少条件啊兄弟

#7


因该是可重复数问题

#8


重复的话,有无穷多解啊,楼主!!!!耍我们啊!!!!

#9


这好象是不定方程:
x[1]+x[2]+...+x[60]=1000(0<=x[i]<100)
解的个数(不按次序)

#10


应该是60个组合,而不是60个数。
其实也好实现
从大的开始
100+99+98+97+.....+91,这样应该是955,还差45。
1+44
2+43



22+23
这样就有22个了
把91改成90,还剩46
1+45
2+44



22+24
又22个了。
再把90改成89。
这不就够了嘛。。。

#11


不一定要把所有的组合都求出来,通过计算的方法是可以得出这个数的,因为楼主要得仅仅是这个数而已。
因为是在0-99间取数,我们可以断定最多有49个0,最少0个0;最多10个99,最少0个99;……
建立相应的组合,在于以某个数作为参照对其它的数进行计算,由于每次仅开放一个差值表达式,因此,这个数就简化为简单的加法形式,而且不用担心会出现重复情况。
那么,怎么划分级差呢?1000由60个小于100的数组成可以看成10组100由6个小于100的数组成和10个99组成最大数时的情况。这样的解是一个很简单的问题,我在这里就不赘述了。

#12


真看不懂啊。

#13


看不懂?可能使我没说清楚:
先看看10个99用尽后的情况:1000-10*99 = 10
10用0-99间的数组成无非就33种:(111111111)(111111112)(11111113)(1111114)(11111122)(111115)(1111123)(11116)(111124)(1111222)(111133)(1117)(11152)(11143)(111322)(118)(1162)(1153)(1144)(11422)(11332)(112222)(19)(172)(163)(154)(1522)(1432)(1333)(13222)(\10)
60个0-99的数加起来和为1000就可以简化为10*(6个0-99数加起来和数为100)+(最大数用尽情况-每组都使用最大数99的情况)
=>> 10*(6个0-99数加起来和数为100)+31
6个0-99数加起来和数为100,这个问题应该不算很难了吧?

#14


对不起刚才那个式子有问题:
60个0-99的数加起来和为1000就可以简化为(6个0-99数加起来和数为100)^10+(最大数用尽情况-每组都使用最大数99的情况)
=>> (6个0-99数加起来和数为100)^10+31

#15


呵呵,UP!
不会无限个的!
如果要求所用的数可以相等的话,可以用10-1000个数,60个这样的组合比较好找,1-99中两两相加等于100的有49种,49种中选10种出来可有好多啊!

#16


不好意思,昨晚看花眼了,应该是:
==>>C_(6个0-99数加起来和数为100)^10+31