常见的脑力激荡器是使用0..9恰好一次填充下面的空格,以使总和最小化.
xxx*xx
- xxx*xx
=
Run Code Online (Sandbox Code Playgroud)
一个解决方案是408 x 37 - 296 x 51 = 0.然而,由于只10! = 3.6*10^6存在数字的排列,所以这个问题很容易被强制解决.我写了一个简单的代码来解决下面发布的这个问题.
类似但更难的问题是使用十六进制数系统执行与上述相同的操作.0...F准确使用数字一次
xxxx * xxx
- xxxx * xxx
=
Run Code Online (Sandbox Code Playgroud)
最小化.我这里只发现了两个解决方案.
FD906 x 5A1
- 7EC83 x B42
= 0
FD906 x 15A
- 7EC83 x 2B4
= 0
Run Code Online (Sandbox Code Playgroud)
是否存在一种更巧妙的方式来改变排列并找到零解决方案?问题是现在布鲁顿力量的排列太多了.
对于16位数字系统3.5 * 10^14,与仅存在3.6 * 10^6基本10版本相比存在.因此,普通的暴力解决方案需要很长时间.我的第一次尝试是将数字列表分成两组
[14, 13, 10, 9, 6, 5, 2, 1] [15, 12, 11, 8, 7, …Run Code Online (Sandbox Code Playgroud) python algorithm optimization mathematical-optimization python-2.7
我试图找到具有一定数字位数的单调增加数字的数量.带有k数字的单调递增数可以写为
n = a_0 a_1 ... a_k-1
在哪里a_i <= a_(i+1)为所有人i in range(0, k).一个更具体的例子是123或12234489.我正在尝试创建一个这样的功能
increasing(2) = 45
increasing(3) = 165
increasing(4) = 495
increasing(5) = 1287
increasing(6) = 3003
Run Code Online (Sandbox Code Playgroud)
因为有45个数字,两个数字正在增加,11, 12, ..., 22, 23, ..., 88, 89, 99.等等.
我认为这是一个使用递归的好机会.我试图编写一个执行此操作的代码,但结果有问题.我的psudo代码是这样的
[1, 2, ..., 9]循环开始这些数字.增加length一个.[i, ..., 9],其中last_digit是前一次递归的数字.length = number of digits wanted添加一个total和return别人重复上述步骤. …我正在尝试编写代码来测试是否n^2 + (n+1)^2完美.由于我在编程方面没有太多经验,所以我只能使用Matlab.到目前为止,这是我尝试过的
function [ Liste ] = testSquare(N)
if exist('NumberTheory')
load NumberTheory.mat
else
MaxT = 0;
end
if MaxT > N
return
elseif MaxT > 0
L = 1 + MaxT;
else
L = 1;
end
n = (L:N)'; % Makes a list of numbers from L to N
m = n.^2 + (n+1).^2; % Makes a list of numbers on the form A^2+(A+1)^2
P = dec2hex(m); % Converts this list to hexadecimal
Length = length(dec2hex(P(N,:))); %F …Run Code Online (Sandbox Code Playgroud)