Problem7:進位判斷(13%)

加法的運算是把 2 個整數靠右對齊,然後由右至左,一位一位相加。如果相加的結果大

於等於 10 就有進位(carry)發生。請寫個程式來判斷兩個正整數相加時,產生了幾次進位的
情況。 
 
輸入說明: 
第一行的數字,表示有幾組測試資料,第二行開始的每一行即為一筆測試資料。每一行
輸入的資料有兩個正整數,以一個空格分開,每個整數的長度均小於 100 位數。 
 
輸出說明: 
對每一筆測試資料,輸出相加後有幾次進位的次數。 
 
輸入範例: 
123 456 
555 555 
 
輸出範例: 
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim fileContents As String
        fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test7.txt")
        Dim row() = Split(fileContents, vbNewLine)

        Dim str1 = ""
        For i As Integer = 1 To Val(row(0))
            Dim d() = Split(row(i), " ")
            Dim a(100)
            Dim b(100)
            Dim at = d(0)
            Dim bt = d(1)
            Dim c = 0
            For k As Integer = 0 To 100
                a(k) = 0
                b(k) = 0
            Next
            For j As Integer = at.Length To 1 Step -1
                a(j - 1) = Val(Mid(at, at.Length - j + 1, 1))
            Next
            For j As Integer = bt.Length To 1 Step -1
                b(j - 1) = Val(Mid(bt, bt.Length - j + 1, 1))
            Next
            For j As Integer = 0 To 100
                If a(j) + b(j) >= 10 Then
                    a(j + 1) = a(j + 1) + 1
                    c = c + 1
                End If
            Next
            str1 = str1 & c & vbNewLine
        Next

        My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result7.txt", str1, False)
        End
    End Sub
End Class
 
 

 

Posted by Solomon 2010年8月14日 17:46


Problem5:字串處理(10%)

 Problem5:字串處理(10%) 

給一個字串,請寫一個程式,計算此字串中,英文字元有幾個? 
 
輸入說明: 
輸入檔第一行表示有幾組測試資料,第二行開始的每一行即為一筆測試資料,每行最多
有 1000 個字元。 
 
輸出說明: 
對每一筆測試資料,輸出字串中英文字元的個數。 
 
輸入範例: 
abc123def456 
133adfag3428a2fwqgq2 
 
輸出範例: 
11 
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim fileContents As String
        fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test5.txt")
        Dim row() = Split(fileContents, vbNewLine)

        Dim str1 = ""
        For i As Integer = 1 To Val(row(0))
            If row(i) = "" Then Exit For
            Dim c = 0
            Dim a = row(i)
            For j As Integer = 1 To a.Length
                If Asc(Mid(a, j, 1)) >= 97 And Asc(Mid(a, j, 1)) <= 122 Then
                    c = c   1
                ElseIf Asc(Mid(a, j, 1)) >= 65 And Asc(Mid(a, j, 1)) <= 90 Then
                    c = c   1
                End If
            Next
            str1 = str1 & c & vbNewLine
        Next
        My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result5.txt", str1, False)

        End
    End Sub
End Class
題目沒說明字串裡的英文字大小寫,為了以防萬一,就多了一個判斷  大寫也算進去
 
話說半夜練習程式安靜許多
我都不想睡了

 

Posted by Solomon 2010年8月14日 08:45


Problem6:判斷是否為 11 的倍數(14%)

給一個正整數 n,請寫一個程式,判斷 n 是否為 11 的倍數? 

 
輸入說明: 
第一行的數字,表示有幾組測試資料,第二行開始即為第一筆測試資料。每筆測試資料
為一個正整數,數字的位數,最高有可能到 1000 位。 
 
輸出說明: 
對每一筆測試資料,輸出是否為 11 的倍數。是的話請輸出 1,反之則輸出 0。 
 
輸入範例: 
24841983960 
121 
 
輸出範例: 
1
 
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim fileContents As String
        fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test6.txt")
        Dim row() = Split(fileContents, vbNewLine)

        Dim result = ""
        For j As Integer = 1 To Val(row(0))
            Dim str = row(j)
            Dim a = 0
            For i As Integer = 1 To str.Length
                If (i   1) Mod 2 = 0 Then
                    a = a   Val(Mid(str, i, 1))
                Else
                    a = a - Val(Mid(str, i, 1))
                End If
            Next
            Dim str1 = ""
            If a = 0 Or a = 11 Then
                str1 = "1"     '是11的倍數
            Else
                str1 = "0"
            End If
            result = result & str1 & vbNewLine
        Next

        My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result6.txt", result, False)

        End
    End Sub
End Class

 這題考慮到的問題是  最高有可能到 1000 位    
是個天大的數字阿  
所以並不能方式直接判斷 數字 MOD 11 = 0
當然
要是這樣出題還需要考嗎

 

解決方法是
a = 奇數位數的數字相加
b = 偶數位數的數字相加
假若a - b = 0  或者 11 就是11的倍數



 

Posted by Solomon 2010年8月14日 03:31


Problem2:數字分解(11%)

 Problem2:數字分解(11%) 

給一個偶數 n,請你將 n 分解成兩個質數的和,也就是說,這兩個質數相加的和必須等於 n。 
 
輸入說明: 
第一行的數字,表示有幾組測試資料,第二行開始即為第一筆測試資料,每筆測試資料
為一個數字,數字的範圍為[4, 10000]間的偶數。 
 
輸出說明: 
對輸入的每筆測試資料,分別輸出 2 個質數,用一個空白做為區隔,請由小到大排列。 
 
輸入範例: 
12 
100 
 
輸出範例: 
5 7 
3 97 
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim fileContents As String
        fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test2.txt")
        Dim row() = Split(fileContents, vbNewLine)

        Dim str1 = ""
        For i As Integer = 0 To Val(row(0))
            If row(i) = "" Then Exit For
            Dim k = Val(row(i))
            For j As Integer = k - 1 To 1 Step -1
                If f(k - j) = True And f(k - (k - j)) = True Then  '條件:兩個都是質數
                    str1 = str1 & k - j & " " & k - (k - j) & vbNewLine
                    Exit For
                End If
            Next
        Next

        My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result2.txt", str1, False)

        End
    End Sub

    Function f(ByVal n) '質數判斷
        Dim c = 0
        Dim a = False
        For i As Integer = 1 To n
            If n Mod i = 0 Then c = c   1
        Next
        If c = 2 Then a = True
        Return a
    End Function
End Class

 

Posted by Solomon 2010年8月14日 03:22


Problem1:數字刪除(12%)

Problem1:數字刪除(12%) 

給 n 個數字,請你在這 n 個數字中,找出所有重覆出現的數字,並把它刪除。最後計算
刪除後剩餘的數字個數。 
 
輸入說明: 
第一行的數字,表示有幾組測試資料,第二行開始即為第一筆測試資料,每行不會超過
100 個數字,每個數字之間用一個空白做為區隔,數字的範圍為[0, 10000]間的整數。 
 
輸出說明: 
對輸入的每筆測試資料,分別輸出刪除完後剩下的數字個數。 
 
輸入範例: 
1 2 3 4 5 6 7 8 9 2 1 
2 4 6 8 10 
 
輸出範例: 
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim fileContents As String
        fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test1.txt")

        Dim row() = Split(fileContents, vbNewLine)

        Dim str1 = ""
        For i As Integer = 1 To Val(row(0))
            Dim aList = New ArrayList
            If row(i) = "" Then Exit For
            Dim d() = Split(row(i), " ")
            For j As Integer = 0 To d.Length - 1
                If alist.Contains(d(j)) = False Then '若不存在則加入
                    alist.Add(d(j))
                Else                                 '否則從aList中刪除
                    aList.Remove(d(j))
                End If
            Next
            str1 = str1 & alist.Count & vbNewLine
        Next

        My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result1.txt", str1, False)

        End
    End Sub
End Class

 

Posted by Solomon 2010年8月14日 03:13