NOIP2016 普及組第一題 買鉛筆

瘋狂的函數 2022-01-07 20:29:03 阅读数:327

noip2016 noip 普及 第一

題目描述

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

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

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

輸入

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

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

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

輸出

輸出一行一個整數,錶示P老師最少需要花費的錢。

樣例輸入

樣例輸入1
57
2 2
50 30
30 27
樣例輸入2
9998
128 233
128 2333
128 666

樣例輸出

樣例輸出1
54
樣例輸出2
18407

提示

限制

【子任務】

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

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

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

【樣例1說明】

鉛筆的三種包裝分別是:

  • 2支裝,價格為2;

  • 50支裝,價格為30;

  • 30支裝,價格為27。

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

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

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

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

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

程序實現

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,shu1,shu2,shu3,jg1,jg2,jg3,a,b,c,min;
cin>>n>>shu1>>jg1>>shu2>>jg2>>shu3>>jg3;
a=ceil(n*1.0/shu1)*jg1;
b=ceil(n*1.0/shu2)*jg2;
c=ceil(n*1.0/shu3)*jg3;
min=a;
if(b<min)
{
min=b;
}
if(c<min)
{
min=c;
}
cout<<min;
return 0;
}
版权声明:本文为[瘋狂的函數]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201072029034372.html