【发布时间】:2020-04-08 07:39:33
【问题描述】:
A previous question 要求按词汇顺序(从低到高)解决
a+b+c+d… = x
其中 a,b,c,d... 是 0-999 和 x 之间的任意整数 是固定整数
给出了一个答案,它使用 python 有效地完全计算了这个。
但是,对于非常大的数字,循环可能需要数年才能完成。
例如,巨大的数字:
304,153,525,784,175,759
是x=2700 的解决方案,因为三组加起来等于2700
304+153+525+784+175+759 = 2700
但是,循环遍历算法以获得等于此数字的第 nth 个解决方案需要数月或数年。
有没有办法直接计算第 nth 解? IE。对于已知解,计算有多少解小于这个解。
【问题讨论】:
-
第一个解决方案是什么?从
n-th 解决方案到n+1-th 的规则是什么? -
@HighPerformanceMark 不确定。在链接的问题中有一个循环算法。不知道如何将其分解为一个公式
-
这是枚举组合学中的一个重要问题。您本质上是在要求一个
unrank函数,该函数从一个等级(索引)到该等级的组合对象。 Mathematics 可能是一个更好的提问地点。 -
@JohnColeman 在那里尝试过。但他们不知道。它是一种非数学操作,所以 johanC 的解决方案可能是最好的解决方案