' Problem2:惱人的零錢(15%)
' 東東在買東西付帳,總是習慣直接從錢包中拿鈔票付帳,而懶得掏出硬幣來。久而久之,錢包裡面累積了許多硬幣,
' 簡直重得不得了,所以東東終於受夠了!因此,她決定趁著今天買東西的時候,想辦法盡量減輕負擔。於是東東開始盤
' 算要怎樣湊出足夠的硬幣,才能讓付出去的硬幣個數越多越好。同時,目前這家店的老闆人很好,不論客人給他多少硬
' 幣,他都一定會用最少的硬幣找錢給客人。所以,當東東走到櫃台結帳時,東東想到自己如果多付一些硬幣讓老闆找錢,
' 說不定可以讓自己的錢包更輕!因此,東東開始煩惱到底要怎麼給錢,才能夠盡量「用掉」最多的硬幣呢(所謂的「用
' 掉」的硬幣個數,指的是拿出去的硬幣數,扣掉老闆找回來的硬幣數)?可惜的是,東東的算術一向不太靈光,因此希
' 望你能幫忙他解決這個煩惱。
' 輸入說明:
' 輸入資料的第一行是一個整數n,代表共有n 筆測試資料。接下來每筆測試資料有3 行:第1 行的數字C 表示要
' 買的東西的價格。第2 行有5 個數字p1 p5 p10 p20 p50,分別是東東錢包裡面一元、五元、十元、二十元和五十元硬幣
' 的個數。第3 行有5 個數字q1 q5 q10 q20 q50,是老闆所擁有的一元、五元、十元、二十元和五十元硬幣的個數。每
' 筆測試資料的所有數字都在0 到10000 之間;同一行的數字之間會用一個空白隔開。你可以假設東東身上的錢足夠來
' 購買該商品,而且至少有一種付錢的方法使得老闆可以找得開(如果需要找錢的話)。因為老闆和東東很不幸地很碰巧
' 地一張鈔票都沒有,請不要問說為什麼不能換成大鈔。
' 輸出說明:
' 你的輸出資料應該有n 行,分別對應到n 筆輸入的測試資料。每一行要輸出一個數字表示東東付完帳之後,剩餘
' 的硬幣總數。
' 輸入範例:
' 2
' 25
' 10 3 2 1 3
' 0 0 0 0 0
' 25
' 0 3 2 2 3
' 1 1 1 1 1
' 輸出範例:
' 6
' 4
Public Class Form1
Dim resultStr = ""
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Hide()
Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test2.txt")
Dim recArray() = Split(fileContents, vbNewLine)
Dim groupN = Val(recArray(0))
Dim recIndex = 1
For j = 1 To groupN
Dim price = recArray(recIndex)
Dim eeArray() = Split(recArray(recIndex + 1))
Dim bossArray() = Split(recArray(recIndex + 2))
Dim p1 = Val(eeArray(0))
Dim p5 = Val(eeArray(1))
Dim p10 = Val(eeArray(2))
Dim p20 = Val(eeArray(3))
Dim p50 = Val(eeArray(4))
Dim q1 = Val(bossArray(0))
Dim q5 = Val(bossArray(1))
Dim q10 = Val(bossArray(2))
Dim q20 = Val(bossArray(3))
Dim q50 = Val(bossArray(4))
Dim pq1 = p1 + q1
Dim pq5 = p5 + q5
Dim pq10 = p10 + q10
Dim pq20 = p20 + q20
Dim pq50 = p50 + q50
Dim amount = p1 * 1 + p5 * 5 + p10 * 10 + p20 * 20 + p50 * 50
Dim remain = amount - price
Dim n50 = 0
While remain >= 50 And pq50 >= 1
n50 = n50 + 1
remain = remain - 50
pq50 = pq50 - 1
End While
Dim n20 = 0
While remain >= 20 And pq20 >= 1
n20 = n20 + 1
remain = remain - 20
pq20 = pq20 - 1
End While
Dim n10 = 0
While remain >= 10 And pq10 >= 1
n10 = n10 + 1
remain = remain - 10
pq10 = pq10 - 1
End While
Dim n5 = 0
While remain >= 5 And pq5 >= 1
n5 = n5 + 1
remain = remain - 5
pq5 = pq5 - 1
End While
Dim n1 = 0
While remain >= 1 And pq1 >= 1
n1 = n1 + 1
remain = remain - 1
pq1 = pq1 - 1
End While
resultStr = resultStr & (n50 + n20 + n10 + n5 + n1) & vbNewLine
recIndex = recIndex + 3
Next j
MsgBox(resultStr)
'My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result2.txt", resultStr, False)
End
End Sub
End Class
標籤雲
visual basic 2008
(157)
訊息分享
(111)
Visual Studio 2008
(64)
wpf
(37)
每日一句
(35)
cpp
(30)
python
(26)
Silverlight
(22)
C++
(18)
Network Security
(15)
全國技藝競竇
(14)
好文分享
(11)
.Net
(10)
Blogger
(10)
名詞解釋
(10)
研討會
(10)
Excel
(9)
書籍介紹
(9)
每日一小品
(9)
電腦黑白講
(8)
Visual Studio 201X
(7)
分享
(7)
網頁設計
(7)
CSS
(5)
Algorithm
(4)
Network
(3)
PHP
(3)
Access
(2)
SA
(2)
VB.Net
(2)
VBA
(2)
WireShark
(2)
Word
(2)
php html
(2)
其他好東東
(2)
分類整理
(2)
Asp.Net
(1)
Batch
(1)
Blockly
(1)
IT News
(1)
OpenAI
(1)
SE
(1)
W7
(1)
Writer
(1)
app inv2
(1)
dfs
(1)
vex vr sample
(1)
影像處理練習
(1)
黑白講
(1)
2008年11月28日 星期五
技藝競竇97年模擬試題參考答案 Q2
標籤:
全國技藝競竇,
訊息分享,
visual basic 2008
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言