NOIP普及組第一題 買鉛筆

2021-07-24 23:50:28 字數 1375 閱讀 9902

參加考試的時候,第一題我足足花了四十多分鐘(因為那奇葩的鍵盤,幸好我向老師報告更換了鍵盤),還是只得了五十分。。。

題目描述:

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

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

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

然後貼一下50分**:

#include 

#include

#include

#include

#include

using

namespace

std;

int n,p[4],v[4],ans[4];

int main()

for(int i=1;i<=3;i++)

ans[0]=min(ans[1],ans[2]);

ans[0]=min(ans[0],ans[3]);

printf("%d\n",ans[0]);

return

0;}

這題是簡單的數學計算,然後比較最小值。

出錯的地方是ans[i]=int(double(n)/p[i]+1)*v[i];這一句上。

我的想法是讓n/p[i]得到的值是小數字補足進1的。而真正的int和int相除的得數是預設捨去小數為的,與自動補足進1相反。所以我搗鼓了半天,樣例資料過了,還是沒有拿到滿分。

而真正的進1補滿方法是

if(n%p[i]==0)  ans[i]=(n/p[i])*v[i];

else ans[i]=(n/p[i]+1)*v[i];

貼上滿分**:

#include 

#include

#include

#include

#include

using

namespace

std;

int n,p[4],v[4],ans[4];

int main()

for(int i=1;i<=3;i++)

ans[0]=min(ans[1],ans[2]);

ans[0]=min(ans[0],ans[3]);

printf("%d\n",ans[0]);

return

0;}

NOIP2016普及組第一題 買鉛筆

ssl 2591 洛谷 p1909 買鉛筆 題目描述 p老師需要去商店買n支鉛筆作為小朋友們參加noip的禮物。她發現商店一共有3種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,也有可能不同。為了公平起見,p老師決定只買同一種包裝的鉛筆。商店不允許將鉛筆的包裝拆開,因此p老師可能需要購買超過n支鉛筆才...

買鉛筆(NOIP2016 普及組第一題)

p老師需要去商店買n支鉛筆作為小朋友們參加noip的禮物。她發現商店一共有3種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,也有可能不同。為了公平起見,p老師決定只買同一種包裝的鉛筆。商店不允許將鉛筆的包裝拆開,因此p老師可能需要購買超過n支鉛筆才夠給小朋友們發禮物。現在p老師想知道,在商店每種包裝的...

NOIP2016普及組複賽第1題 買鉛筆

題目描述 p老師需要去商店買n支鉛筆作為小朋友們參加noip的禮物。她發現商店一共有3種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,也有可能不同。為了公平起 見,p老師決定只買同一種包裝的鉛筆。商店不允許將鉛筆的包裝拆開,因此p老師可能需要購買超過n支鉛筆才夠給小朋 友們發禮物。現在p老師想知道,在...