Math 计算一个方程式对数组中的项为真的次数
我有一个包含从1到1000的整数的数组。我试图计算这个等式为真的次数Math 计算一个方程式对数组中的项为真的次数,math,logic,equation,Math,Logic,Equation,我有一个包含从1到1000的整数的数组。我试图计算这个等式为真的次数A+B+C+D=E其中A您需要将1..1000范围内的每个值E的整数分区数计算为4个部分 Python函数countparts计算此类分区的数量 def cp(n, k, m): if k == 0: if n == 0: return 1 else: return 0 res = 0 for i in range(min(n
A+B+C+D=E
其中A您需要将1..1000范围内的每个值E的整数分区数计算为4个部分
Python函数countparts
计算此类分区的数量
def cp(n, k, m):
if k == 0:
if n == 0:
return 1
else:
return 0
res = 0
for i in range(min(n + 1, m + 1)):
res += cp(n - i, k - 1, i)
return res
def countparts(n, k):
return cp(n - k, k, n - k + 1)
print(countparts(8, 4))
>> 5 (1115, 1124, 1133, 1223, 2222)
但对于大的争论,它的工作速度很慢
我还找到了快速获取所需值的公式:
P(i) = round((i**3 + 3*i*i - 9*i*(i % 2))/144)
你的问题陈述相当含糊。数组是否包含从1到1000的所有整数,还是仅包含一个子集?它能包含重复项吗?数字A–D可以对应同一个数字,还是必须从数组中的不同项目中选择?还有,到目前为止您尝试了哪些解决方案?我的数组包含1到1000之间的所有整数,所以1,2,3,4,999, 1000. 数字A-D可以对应相同的数字,是的。我曾经尝试过一种解决方案,但它速度非常慢,太复杂,彼此之间包含许多for循环。您对此有什么具体的编程问题?你能提供一份你管理过的最好的报告吗?用合适的数据结构准备数据,用一个简单的例子来检查四个数字的简单集合应该是可以实现的。“我试过一个解决方案”请展示一个MRE。@Yunnosch很遗憾,我已经删除了我的代码,但是如果我有点想法,我会把它贴在这里