|
被搞晕了,就乱写不过好象最后也正确
Public br, cr, x, y, z, s,n, j, d, arr
Sub aa()
ReDim br(1 To 500, 7): ReDim cr(7, 9, 1): ReDim arr(1 To 100, 1 To 1)
ar = Array(2, 3, 5, 7, 11, 13, 17)
x = 0: y = 0: z = "": n = 0: j = 0: d = 0
For i = 0 To 6
k = 0
For j = 10 To 999
a = Mid(j, 1, 1): b = Mid(j, 2, 1): c = Mid(j, 3, 1)
If c = "" Then c = "0"
If a <> b And b <> c And a <> c Then
If j / ar(i) = Int(j / ar(i)) Then
k = k + 1
br(k, i) = Format(j, "000")
cr(i, Val(Mid(br(k, i), 1, 1)), 0) = k
cr(i, Val(Mid(br(k, i), 1, 1)), 1) = cr(i, Val(Mid(br(k, i), 1, 1)), 1) + 1
End If
End If
Next
If i = 0 Then n = k
Next
bb
End Sub
Sub bb()
j = 0
For i = 1 To n
cc cr(1, Val(Mid(br(i, 0), 2, 1)), 1), 1, br(i, 0), cr(1, Val(Mid(br(i, 0), 2, 1)), 0)
Next
[h1] = j
[h2].Resize(d, 1) = arr
End Sub
Sub cc(x, y, z, s)
If y = 7 Then
d = d + 1
ReDim brr(9)
For d1 = 1 To 10
brr(Val(Mid(z, d1, 1))) = Val(Mid(z, d1, 1))
Next
For d2 = 0 To 9
If brr(d2) = "" Then z = d2 & z
Next
arr(d, 1) = z
j = j + Val(z)
End If
a = Left(Right(z, 2), 1): c = s - x + 1: b = Mid(br(c, y), 1, 1)
If a = b And y < 7 And Val(Right(z, 1)) >= Val(Mid(br(c, y), 2, 1)) Then
If Right(z, 2) = Mid(br(c, y), 1, 2) And InStr(z, Mid(br(c, y), 3, 1)) = 0 Then
cc cr(y + 1, Val(Mid(br(c, y), 2, 1)), 1), y + 1, z & Mid(br(c, y), 3, 1), cr(y + 1, Val(Mid(br(c, y), 2, 1)), 0)
End If
cc x - 1, y, z, s
End If
End Sub |
|