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}}=== |