login
Solutions to place plus, minus, multiply or divide signs to a nonzero digits sequence 123456789 so that result of thus described arithmetic operation will be n.
0

%I #4 Apr 25 2016 12:08:16

%S 161,151,127,152,129,123,135,135,149,162,157,140,134,131,150,129,134,

%T 140,161,156,126,134,143,122,123,150,137,146,141,131

%N Solutions to place plus, minus, multiply or divide signs to a nonzero digits sequence 123456789 so that result of thus described arithmetic operation will be n.

%e For n=1, a(1)=161 means there exist 161 solutions as following: Solution 1: 1-2/3*45+6+7+8+9=1 Solution 2: 12-34+5-6+7+8+9=1 Solution 3: 1-2+34-56+7+8+9=1 Solution 4: 1*2-3*4-5+6-7+8+9=1 Solution 5: 1*2+3-4*5+6-7+8+9=1 Solution 6: 1-2-3-4+5-6-7+8+9=1 Solution 7: 1+2+3-4-5-6-7+8+9=1 Solution 8: 1*2*3-4-5-6-7+8+9=1 Solution 9: 1*2-3*4*5+6*7+8+9=1 ......... Solution 151: 12*3/4*56/7/8/9=1 Solution 152: 1*2-3-45-6*7+89=1 Solution 153: 1-23-4+5-67+89=1 Solution 154: 1*2-3-4*5-67+89=1 Solution 155: 1+23-45-67+89=1 Solution 156: 1*23+4+56+7-89=1 Solution 157: 123-4*5-6-7-89=1 Solution 158: 123+4-5*6-7-89=1 Solution 159: 123+4+5-6*7-89=1 Solution 160: 1+23+4-5+67-89=1 Solution 161: 1-23+45+67-89=1

%o (Excel) VBA Program:

%o Sub Test() Dim Solutions(1 To 500), result As Single Dim temp As Long, x(1 To 17) As String, op Dim i As Long, j As Long, out As String, num As Long op = Array("+", "-", "*", "/", "") For i = 1 To 9 x(2 * i - 1) = i Next For i = 0 To 5 ^ 8 - 1 temp = i For j = 1 To 8 x(2 * j) = op(temp Mod 5) temp = temp \ 5 Next out = Join(x, "") result = Evaluate(out) If result > 0 Then If result < 501 Then If InStr(result, ".") = 0 Then Solutions(result) = Solutions(result) + 1 End If End If End If Next Debug.Print Join(Solutions, vbCrLf) End Sub

%K easy,base,nonn

%O 1,1

%A _Zhining Yang_, Dec 05 2009