NOIP2016普及組第一題——買鉛筆
阿新 • • 發佈:2019-01-27
SSL 2591
洛谷 P1909 買鉛筆
題目描述
P老師需要去商店買n支鉛筆作為小朋友們參加NOIP的禮物。她發現商店一共有3種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,價格也有可能不同。為了公平起見,P老師決定只買同一種包裝的鉛筆。商店不允許將鉛筆的包裝拆開,因此P老師可能需要購買超過n支鉛筆才夠給小朋友們發禮物。現在P老師想知道,在商店每種包裝的數量都足夠的情況下,要買夠至少n支鉛筆最少需要花費多少錢。
var n,i,money,num,min,s:longint; begin readln(n); for i:=1 to 3 do begin readln(num,money); if n mod num=0 then s:=(n div num)*money else s:=(n div num+1)*money; if (s<min)or(i=1) then min:=s; end; writeln(min); end.
在程式中,money即每袋鉛筆的價格,num是有每袋多少鉛筆。
於是得出這樣一個模型:n(所需鉛筆數)除以num
但顯然能看出,這個對於n不是num的倍數的情況不管用,所以加入非倍數情況:
num對n求餘,若餘數為零則正常執行,若餘數不為零則需要多買一袋。
最後,將購買每袋鉛筆以使鉛筆數量達到n的錢數記起來,判斷,若這錢數比之前的少,則放入,最後輸出最小值。以上就是關於NOIP2016普及組第一題的題解。