2010年3月29日 星期一

大數相減

'大數相減
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim n1 = "10000000000000001"
        Dim n2 = "100000000000000000000"
        Dim isNeg = False
        If n1.Length < n2.Length Or n1.Length = n2.Length And Val(Microsoft.VisualBasic.Left(n1, 1)) < Val(Microsoft.VisualBasic.Left(n2, 1)) Then
            isNeg = True
            Dim tem = n1
            n1 = n2
            n2 = tem
        End If

        Dim a(100)
        Dim b(100)
        Dim d(100)

        Dim i1 = 0
        For i = n1.Length - 1 To 0 Step -1
            a(i1) = Val(n1.Chars(i))
            i1 = i1 + 1
        Next

        i1 = 0
        For i = n2.Length - 1 To 0 Step -1
            b(i1) = Val(n2.Chars(i))
            i1 = i1 + 1
        Next

        Dim c = 0
        For i = 0 To 100
            If a(i) - c >= b(i) Then
                d(i) = a(i) - b(i) - c
                c = 0
            Else
                d(i) = a(i) - b(i) - c + 10
                c = 1
            End If
        Next

        Dim str = ""
        For i = 0 To 100
            str = d(i) & str
        Next

        While Microsoft.VisualBasic.Left(str, 1) = "0"
            str = Microsoft.VisualBasic.Right(str, str.Length - 1)
        End While
        If isNeg = True Then str = "-" & str
        MsgBox(str)
        End
    End Sub
End Class

沒有留言: