Const maxn = 100
Dim a%(maxn), t%, n%
Sub comb(ByVal m%, ByVal k%, ByVal s%)
Dim i%, j%
For i = m To k Step -1
a(k) = i
If k > 1 Then
comb i - 1, k - 1, s
Else
t = 0
For j = a(0) To 0 Step -1
t = t + a(j)
Next
If t = s Then
n = n + 1: Debug.Print s; "=";
For j = a(0) To 2 Step -1
Debug.Print a(j); "+";
Next
Debug.Print a(1)
End If
End If
Next
End Sub
Sub main()
Dim ms%, ss%, i%, h%, k%, wmin%, wmax%
ss = InputBox("ss")
ms = InputBox("ms")
For i = 1 To ms
h = h + i
If h > ss Then wmax = i - 1: Exit For
Next
If i > ms Then
Debug.Print "..."
End
End If
h = 0
For i = 1 To ms
h = h + (ms - i + 1)
If h > ss Then wmin = i - 1: Exit For
Next
For k = wmin To wmax
a(0) = k
comb ms, k, ss
Next
Debug.Print "n="; n
End Sub