1. 程式人生 > >NOIP普及組第一題:買鉛筆

NOIP普及組第一題:買鉛筆

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

題目描述:

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

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

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

然後貼一下50分程式碼:

#include <iostream>
#include <cstdio>
#include <cstdlib> #include <cmath> #include <algorithm> using namespace std; int n,p[4],v[4],ans[4]; int main(){ freopen("pencil.in","r",stdin); freopen("pencil.out","w",stdout); scanf("%d",&n); for(int i=1;i<=3;i++){ scanf("%d%d",&p[i],&v[i]); } for
(int i=1;i<=3;i++){ ans[i]=int(double(n)/p[i]+1)*v[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 <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;
int n,p[4],v[4],ans[4];
int main(){
    freopen("pencil.in","r",stdin);
    freopen("pencil.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=3;i++){
        scanf("%d%d",&p[i],&v[i]);
    }
    for(int i=1;i<=3;i++){
        if(n%p[i]==0)  ans[i]=(n/p[i])*v[i];
        else           ans[i]=(n/p[i]+1)*v[i];
    }
    ans[0]=min(ans[1],ans[2]);
    ans[0]=min(ans[0],ans[3]);
    printf("%d\n",ans[0]);
    return 0;
}

相關推薦

NOIP普及第一鉛筆

參加考試的時候,第一題我足足花了四十多分鐘(因為那奇葩的鍵盤,幸好我向老師報告更換了鍵盤),還是隻得了五十分。。。 題目描述: P老師需要去商店買n支鉛筆作為小朋友們參加NOIP的禮物。她發現商店一共有 3種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,價格也

NOIP普及訓練動態規劃專練』

NOIP普及組訓練題:動態規劃專練 T1蛋糕塔 題目描述 Hl高中要舉行一場蛋糕塔比賽。注意,不是蛋糕比賽,而是蛋糕塔比賽。 學校會提供N種不同型別的蛋糕,第i種蛋糕的高度為Hi(5 <= H_i <= T),營養價值為Vi(1 <= Vi&l

鉛筆(NOIP2016 普及第一

都是 第一個 data 測試 技術分享 不用 也不會 noi 小朋友 描述 P老師需要去商店買n支鉛筆作為小朋友們參加NOIP的禮物。她發現商店一共有3種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,價格也有可能不同。為了公平起見,P老師決定只買同一種包裝的鉛筆。 商店不允許

NOIP2016普及第一——鉛筆

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

金幣(NOIP2015 普及第一

第一題 全部 描述 ase base class ott span thml 描述 國王將金幣作為工資,發放給忠誠的騎士。第一天騎士收到一枚金幣;之後兩天(第二天和第三天),每天收到兩枚金幣;之後三天(第四、五、六天),每天收到三枚金幣;之後四天,每天收到四枚金幣,以此類推

珠心算測驗(NOIP2014 普及第一

變化 空格 不同 too 提示 通過 clas syntax 輸出 描述 珠心算是一種通過在腦中模擬算盤變化來完成快速運算的一種計算技術。珠心算訓練, 既能夠開發智力,又能夠為日常生活帶來很多便利,因而在很多學校得到普及。 某學校的珠心算老師采用一種快速考察珠心算加法能力的

數字反轉(NOIP2011 普及第一

clas 常見 給定 Language 提示 -h numbers 得到 輸出 描述 給定一個整數,請將該數各個位上數字反轉得到一個新數。新數也應滿足整數的常見形式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零(參見樣例2)。 格式 輸入格式 輸入共1 行

質因數分解(NOIP2012 普及第一

輸入 質數 line syntax tool 輸出格式 兩個 因數 toolbar 描述 已知正整數n是兩個不同的質數的乘積試求出較大的那個質數。 格式 輸入格式 輸入只有一行包含一個正整數n。 輸出格式 輸出只有一行包含一個正整數p, 即較大的那個質數。 樣例1 樣例輸入

ISBN號碼(NOIP2008 普及第一

Language numbers 例如 tool 字符 英語 toolbar 得到 錯誤 描述 每一本正式出版的圖書都有一個ISBN號碼與之對應,ISBN碼包括9位數字、1位識別碼和3位分隔符,其規定格式如“x-xxx-xxxxx-x”,其中符號“-”就是分隔符(鍵盤上的減

2017.9 第一醬油 (java)

2017.9 第一題:買醬油 (java) 問題描述   小明帶著N元錢去買醬油。醬油10塊錢一瓶,商家進行促銷,每買3瓶送1瓶,或者每買5瓶送2瓶。請問小明最多可以得到多少瓶醬油。 輸入格式   輸入的第一行包含一個整數N,表示小明可用於買醬油的錢數。N是10的整數倍,N不超過

NOIP2002普及第一【級數求和】題解 (普及山東tyd)

一道水題,我就不想多說什麼了。 題目描述 已知:Sn= 1+1/2+1/3+…+1/n。顯然對於任意一個整數K,當n足夠大的時候,Sn大於K。 現給出一個整數K(1<=k<=15),要求計算出一個最小的n;使得Sn>K。 輸入輸出格式 輸入格式: 一個正整數

博弈論(noip普及2010第四 三國遊戲)

三國 勝利 沒有 blog hang max efi () turn 小涵很喜歡電腦遊戲,這些天他正在玩一個叫做《三國》的遊戲。 在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 N 位武將(N為偶數且不小於 4),任意兩個武將之間有一個“默

[jzoj]2018.07.12【NOIP普及】模擬賽D解題報告

1.權勢二進位制 題目: 一個十進位制整數被叫做權勢二進位制,當他的十進位制表示的時候只由0或1組成。例如0,1,101,110011都是權勢二進位制而2,12,900不是。 當給定一個n的時候,計算一下最少要多少個權勢二進位制相加才能得到n。 輸入: k組測試資料。 輸出:

[jzoj]2018.07.15【NOIP普及】模擬賽D解題報告

目錄: 1.馬農 2.馬語翻譯 3.馬球比賽  4.棋盤遊戲 1.馬農 題目描述: 在觀看完戰馬檢閱之後,來自大草原的兩兄弟決心成為超級“馬農”,專門飼養戰馬。 兄弟兩回到草原,將可以養馬的區域,分為 N*N 的單位面積的正方形, 並實地進行考察,歸納出了每

NOIP普及蒟蒻掙扎之模擬賽C 第四 ——約數國の王♂

轉自jzoj & c渣渣黨福利 題目描述 數學的王國裡,有一些約數國王……約數國王的定義是這樣的:一個大於1的整數n,如果它約數的個數比1~n-1的每個整數的約數的個數都要多,那麼我們就稱它為約數國王。聰明的(______)在奧數書上認識了它們,於是

藍橋杯第八屆C/C++ A省賽(2017)第一迷宮

標題:迷宮X星球的一處迷宮遊樂場建在某個小山坡上。它是由10x10相互連通的小房間組成的。房間的地板上寫著一個很大的字母。我們假設玩家是面朝上坡的方向站立,則:L表示走到左邊的房間,R表示走到右邊的房間,U表示走到上坡方向的房間,D表示走到下坡方向的房間。X星球的居民有點懶,

[jzoj]2018.07.11【NOIP普及】模擬賽D解題報告

目錄 1.和諧數 2.分數 3.終極數 4.串 1.和諧數 給定一個長度為N的序列a,對於每一個數都可選或不選,把選出的數有序組成一個新的序列b,使b序列的“和諧數”最大。一個序列的和諧數如下定義:對於位置i,如果第奇數次選的則加上bi,偶數次選的則減去bi  注

NOIP普及題解(能有民間資料的三

普及組題解pascal版本(能測民間資料的三題) 1.成績(score.cpp/c/pas) 【問題描述】 牛牛最近學習了 C++入門課程,這門課程的總成績計算方法是: 總成績=作業成績×20%+小測