a, b, c, d, e, f, g & h
是不同的整数。
如果a*b + c*d = e*f + g*h = n
n
的最低价值是什么?
如果我们考虑带有8个循环的8个数字,显然for循环将永远。有没有更简单的方法来解决这个问题?
我需要一些提示来用数学或Python来解决它。
答案 0 :(得分:1)
您可以使用itertools.combinations
来获取集{1..9}中数字的所有组合。然后在min
函数中使用生成器表达式来查找预期结果。
>>> S=range(10)
>>>
>>> from itertools import combinations
>>> min(a*b+c*d for a,b,c,d,e,f,g,h in combinations(S,8) if a*b + c*d == e*f + g*h)
但是,由于这不会给出任何结果,而不是range(10)
,您可以使用更大的range()
。
答案 1 :(得分:1)
对于正整数,(1到8)
First@Sort@DeleteCases[({a, b, c, d, e, f, g, h} = #;
If[(n = a*b + c*d) == e*f + g*h,
{n, a, b, c, d, e, f, g, h}]) & /@ Permutations[Range[8]], Null]
{31,1,7,4,6,2,8,3,5}
最低n = 31