內容 :
最近程式競賽非常頻繁。儘管對參賽者來說這是好事,對出題者來說卻適得其反。目前出題者尚能維持一個題庫並說:「沒有問題!」但是如果繼續這樣下去不知道還能維持多久。
給你一年中每個月所出的題目數量及每個月所需要的題目數量。如果某個月需要 N 個題目,而當時的題庫數量不足,那麼該月的所有比賽均取消。請寫個程式來判斷是否有足夠的題目來辦比賽。記住,如果某個題目是在 X 月出的,該題目必須在 X+1 月或其後的月份才能使用。
給你一年中每個月所出的題目數量及每個月所需要的題目數量。如果某個月需要 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. :(" (沒有題目)。
範例輸入 :
5
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
提示 :
雖然這個題目最好用「陣列」來解,但是不用陣列也可以解,只是程式碼會重覆且冗長。
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
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