2012年11月20日 星期二

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
提示 :
雖然這個題目最好用「陣列」來解,但是不用陣列也可以解,只是程式碼會重覆且冗長。

1 則留言:

  1. Dim num, casee, make(12), need(12) As Integer
    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Do
    Input #1, have
    If have < 0 Then Exit Do
    For ai = 1 To 12
    Input #1, make(ai)
    Next
    For bi = 1 To 12
    Input #1, need(bi)
    Next
    casee = casee + 1
    Print #2, "Case " & casee & ":"
    For i = 1 To 12
    have = have + make(i - 1)
    If have < need(i) Then Print #2, "No problem. :("
    If have >= need(i) Then Print #2, "No problem! :D"
    Next
    Loop
    Close #2
    Close #1
    End
    End Sub

    回覆刪除