1. 程式人生 > >買鉛筆

買鉛筆

題目描述

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

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

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

輸入輸出格式

輸入格式:

 

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

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

保證所有的77個數都是不超過1000010000的正整數。

 

輸出格式:

 

11個整數,表示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

說明

鉛筆的三種包裝分別是:

  • 22支裝,價格為22;
  • 5050支裝,價格為3030;
  • 3030支裝,價格為2727。

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

如果她選擇購買第一種包裝,那麼她需要購買2929份,共計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老師也不會選擇。

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

【子任務】

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

每個測試點的資料規模及特點如下表:

上表中“整倍數”的意義為:若為KK,表示對應資料所需要的鉛筆數量nn—定是每種包裝鉛筆數量的整倍數(這意味著一定可以不用多買鉛筆)。

 

 

 

本來還以為這道題是一道貪心題,想了好久,可後來發現了P老師決定只買同一種包裝的鉛筆這樣一句話。

然後發現,是自己想複雜了。

#include<stdio.h>
int main()
{
    int n;
    int a,b;
    scanf("%d",&n);
    int maxx=100000000;
    int num=0;
    for(int i=0;i<3;++i)
    {
        scanf("%d%d",&a,&b);
        if(n%a!=0)
        {
            num=(n/a+1)*b;
            if(num<maxx)
                maxx=num;
        }
        else
        {
            num=(n/a)*b;
            if(num<maxx)
                maxx=num;

        }
    }
    printf("%d\n",maxx);
    return 0;
}