Solve hanging lantern problem: Difference between revisions

Content added Content deleted
Line 246: Line 246:
{{works with|Visual Basic|6}}
{{works with|Visual Basic|6}}


<font color="#FF0000">Note: Integer may overflow if the input number is too big. To solve this problem, simply change Integer to Long or Variant for Decimal. </font>
====Recursive version====
;Main code
;Main code
<lang vb>
<lang vb>
Line 278: Line 280:


Function getLantern(arr() As Integer) As Integer
Function getLantern(arr() As Integer) As Integer
Dim res As Integer
Dim res As Integer, i As Integer
For i = 1 To n
For i = 1 To n
If arr(i) <> 0 Then
If arr(i) <> 0 Then
Line 361: Line 363:
Attribute VB_PredeclaredId = True
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False</lang>
Attribute VB_Exposed = False</lang>

====Math solution====
{{trans|Python}}
Reimplemented "getLantern" function above

<lang vb>Function getLantern(arr() As Integer) As Integer
Dim tot As Integer, res As Integer
Dim i As Integer
For i = 1 To n
tot = tot + a(i)
Next i
res = factorial(tot)
For i = 1 To n
res = res / factorial(a(i))
Next i
getLantern = res
End Function

Function factorial(num As Integer) As Integer
Dim i As Integer
factorial = 1
For i = 2 To n
factorial = factorial * i
Next i
End Function


==={{header|Yabasic}}===
==={{header|Yabasic}}===