2012年7月12日 星期四

No Problem


內容 : 
最近程式競賽非常頻繁。儘管對參賽者來說這是好事,對出題者來說卻適得其反。目前出題者尚能維持一個題庫並說:「沒有問題!」但是如果繼續這樣下去不知道還能維持多久。
給你一年中每個月所出的題目數量及每個月所需要的題目數量。如果某個月需要 N 個題目,而當時的題庫數量不足,那麼該月的所有比賽均取消。請寫個程式來判斷是否有足夠的題目來辦比賽。記住,如果某個題目是在 X 月出的,該題目必須在 X+1 月或其後的月份才能使用。
輸入說明 :
每筆測資的第一行有一個整數 S (0≤S≤100),表示年初已有的庫存題目數量。第二行有 12 個以空白隔開的整數,依序表示一到十二月每個月所出的題目數量。第三行也有 12 個以空白隔開的整數,依序表示每個月比賽所需要的題目數量。這些整數會介於 0 到 20 之間 (含)。負數代表輸入的結束。
輸出說明 :
對於每筆測資,印出一行 "Case X:",X 代表測資編號。然後印出 12 行,如果 i 月 (1≤i≤12) 有足夠的題目,則在第 i 行印出"No problem! :D" (沒有問題),否則印出 "No problem. :(" (沒有題目)。
範例輸入 :
3 0 3 5 8 2 1 0 3 5 6 9 
0 0 10 2 6 4 1 0 1 1 2 2 
-1
範例輸出 :
Case 1: 
No problem! :D 
No problem! :D 
No problem. :( 
No problem! :D 
No problem! :D 
No problem! :D 
No problem! :D 
No problem! :D 
No problem! :D 
No problem! :D 
No problem! :D 
No problem! :D 
提示 :
雖然這個題目最好用「陣列」來解,但是不用陣列也可以解,只是程式碼會重覆且冗長。

2 則留言:

  1. Private Sub Form_Load()
    Dim x(12), y(12) As Integer
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Y1 = 0
    Do While Not EOF(1)
    Input #1, n
    If n < 0 Then Exit Do
    Y1 = Y1 + 1
    Print #2, "Case" & Y1 & ":"
    a = 0
    b = 0
    For i = 1 To 12
    Input #1, X1
    x(i) = X1
    Next
    For i = 1 To 12
    Input #1, X1
    y(i) = X1
    Next
    x(1) = x(1) + n
    For i = 1 To 12
    a = a + x(i - 1)
    b = b + y(i)
    If a >= b Then
    Print #2, "No problem! :D "
    a = a - b
    b = 0
    Else
    Print #2, "No problem. :( "
    b = 0
    End If
    Next
    Loop
    Close
    Close
    End
    End Sub

    回覆刪除
  2. Dim g, i, a As Integer
    Private Sub Form_Load()
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    r = 1
    Do While Not EOF(1)
    Input #1, a
    Line Input #1, x
    Line Input #1, y
    Input #1, b
    k = Split(x): l = Split(y)
    Print #2, "Case " & r & ":"
    For i = 0 To 11
    Call c(Val(k(i)), Val(l(i)))
    Next i
    r = r + 1
    If Val(b) < 0 Then End
    Loop
    Close #2
    Close #1
    End
    End Sub
    Sub c(d, e)
    If i = 0 Then g = Val(a)
    If e > g Then
    Print #2, "No problem. :( "
    g = g + d
    Else
    Print #2, "No problem! :D "
    g = g + d - e
    End If
    End Sub

    回覆刪除