Solve hanging lantern problem: Difference between revisions

Line 246:
{{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
<lang vb>
Line 278 ⟶ 280:
 
Function getLantern(arr() As Integer) As Integer
Dim res As Integer, i As Integer
For i = 1 To n
If arr(i) <> 0 Then
Line 361 ⟶ 363:
Attribute VB_PredeclaredId = True
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}}===
43

edits