【洛谷P1909】 買鉛筆

題目描述

P老師需要去商店買n支鉛筆作爲小朋友們參加NOIP的禮物。她發現商店一共有 3種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,價格也有可能不同。爲了公平起見,P老師決定只買同一種包裝的鉛筆。

商店不允許將鉛筆的包裝拆開,因此P老師可能需要購買超過n支鉛筆纔夠給小朋 友們發禮物。

現在P老師想知道,在商店每種包裝的數量都足夠的情況下,要買夠至少n支鉛筆最少需要花費多少錢。

輸入格式

第一行包含一個正整數n,表示需要的鉛筆數量。

接下來三行,每行用2個正整數描述一種包裝的鉛筆:其中第1個整數表示這種 包裝內鉛筆的數量,第2個整數表示這種包裝的價格。

保證所有的7個數都是不超過10000的正整數。

輸出格式

1個整數,表示P老師最少需要花費的錢。

輸入輸出樣例

輸入 #1

57
2 2
50 30
30 27

輸出 #1

54

輸入 #2

9998
128 233
128 2333
128 666

輸出 #2

18407

輸入 #3

9999
101 1111
1 9999
1111 9999

輸出 #3

89991

說明/提示

鉛筆的三種包裝分別是:

  • 2支裝,價格爲2;
  • 50支裝,價格爲30;
  • 30支裝,價格爲27。

P老師需要購買至少57支鉛筆。

如果她選擇購買第一種包裝,那麼她需要購買29份,共計2 \times 29 = 582×29=58支,需要花費的錢爲2 \times 29 = 582×29=58。

實際上,P老師會選擇購買第三種包裝,這樣需要買22份。雖然最後買到的鉛筆數 量更多了,爲30 \times 2 = 6030×2=60支,但花費卻減少爲27 \times 2 = 5427×2=54,比第一種少。

對於第二種包裝,雖然每支鉛筆的價格是最低的,但要夠發必須買22份,實際的花費達到了 30 \times 2 = 6030×2=60,因此P老師也不會選擇。

所以最後輸出的答案是54。

【子任務】

子任務會給出部分測試數據的特點。如果你在解決題目中遇到了困難,可以嘗試 只解決一部分測試數據。

每個測試點的數據規模及特點如下表:

上表中“整倍數”的意義爲:若爲K,表示對應數據所需要的鉛筆數量n—定是每種包裝鉛筆數量的整倍數(這意味着一定可以不用多買鉛筆)。

 

思路:分別考慮購買每一種包裝的鉛筆所需的最低花費,記錄在cost數組中,最後輸出最小值即可,注意購買的數量一定要大於等於所需數量纔行,所以在非整數倍時需要多買一包鉛筆。

#include <string.h>
#include <stdio.h>
#include <memory.h>

int main () {
    int a[6],i,j=3,n,cost[3]={0},s,min;
    scanf("%d",&n);
    for(i=0;i<6;i++)
    {
        scanf("%d",&a[i]);
    }
    i=0;
    while(j--)
    {
        if(n%a[i]==0)
            s=n/a[i];
        else
            s=n/a[i]+1;
        cost[j]=s*a[i+1];
        i+=2;
    }
    min=cost[0];
    for(i=1;i<=2;i++)
        if(cost[i]<min)
            min=cost[i];
    printf("%d",min);


    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章