题目描述

P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 33种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P老师决定只买同一种包装的铅笔。

商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过nn支铅笔才够给小朋 友们发礼物。

现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少nn支铅笔最少需要花费多少钱。

输入格式

第一行包含一个正整数nn,表示需要的铅笔数量。

接下来三行,每行用22个正整数描述一种包装的铅笔:其中第11个整数表示这种 包装内铅笔的数量,第22个整数表示这种包装的价格。

保证所有的77个数都是不超过1000010000的正整数。

输出格式

11个整数,表示P老师最少需要花费的钱。

输入输出样例

输入 #1


输出 #1

 
 

输入#2


输出 #2

 

输入 #3


输出 #3

 

说明/提示

铅笔的三种包装分别是:

  • 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—定是每种包装铅笔数量的整倍数(这意味着一定可以不用多买铅笔)。

题解

  分析

使用位运算来进行大幅度累加,是倍增的思想

 i<< 等同于 i*

  题解

 #include<bits/stdc++.h>
using namespace std;
int i,j,k,n,m,w,ans;
int main()
{
scanf("%d",&n);
for(i=;i<;i++)
{
scanf("%d%d",&j,&k);
m=j;
w=k;//输入并存下初始的价格与数量
while(j<n)
{
j<<=;
k<<=;//价格与数量不断*2直到数量大于n
}
while(j>n)
{
j-=m;
k-=w;//*2有可能导致买太多了,减去一些
}
while(j<n)
{
j+=m;
k+=w;//减去之后又可能太少了,加上一些
}
if(k<ans||ans==)
ans=k;//判断是否是最小花费
}
printf("%d\n",ans);
return ;//输出并返回
}

#P1909 买铅笔 的题解的更多相关文章

  1. 洛谷P1909 买铅笔

    题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 333 种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同.为了公平起 见,P老师决定只买同一种包装的 ...

  2. P1909 买铅笔

    题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 33种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同.为了公平起 见,P老师决定只买同一种包装的铅笔 ...

  3. LuoGu P1909 买铅笔???

    题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同.为了公平起 见,P老师决定只买同一种包装的铅笔. ...

  4. Java实现 洛谷 P1909 买铅笔

    import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(Strin ...

  5. 买铅笔(NOIP2016)

    先给题目链接:买铅笔 这题非常水,没啥可分析的,先给代码: #include<bits/stdc++.h> //1 using namespace std; int main(){ int ...

  6. NOIP【2016普及组】 考后有感(买铅笔,回文日期,海港,魔法阵)

    普及组考试已落下大幕,但我们那扑通扑通等待成绩的心仍然无法平静,先来给四道题做一个总结: 一. 买铅笔 自评难度:1星 其实这道题没有什么难度,生命之题,满分必拿,100分,保底啦~\(≧▽≦)/~ ...

  7. P1909 [NOIP2016 普及组] 买铅笔

    如果她选择购买第一种包装,那么她需要购买29份,共计2×29=58支,需要花费的钱为2×29=58. 实际上,P老师会选择购买第三种包装,这样需要买22份.虽然最后买到的铅笔数 量更多了,为30×2= ...

  8. NOIP普及组:买铅笔

    参加考试的时候,第一题我足足花了四十多分钟(因为那奇葩的键盘,幸好我向老师报告更换了键盘),还是只得了五十分... 题目描述: P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共 ...

  9. 2016年NOIP普及组复赛题解

    题目涉及算法: 买铅笔:入门题: 回文日期:枚举: 海港:双指针: 魔法阵:数学推理. 买铅笔 题目链接:https://www.luogu.org/problem/P1909 设至少要买 \(num ...

随机推荐

  1. zk zkCli shell命令

    查看zk 注册服务:在zk bin 下执行 sh zkCli.sh 计入客户端shell命令行 查看zk注册服务:ls  /  或者递归查看 ls  -s  /      列出的为注册服务. 查询服务 ...

  2. linux 内存,cpu占用最高进程查询

    1. 可以使用一下命令查使用内存最多的10个进程 ps -aux | sort -k4nr | head -n 10 2. 可以使用一下命令查使用CPU最多的10个进程 ps -aux | sort ...

  3. FreeRTOS学习笔记1:任务

    任务特性每个任务有自己的环境,不依赖于其他任务与调度器任何时间点只有一个任务运行.由调度器决定上下文环境:(寄存器值.堆栈内容等)调度器保证的就是任务开始执行时的上下文环境与上一次退出时相同所以每个任 ...

  4. win10 superfetch 使系统变慢

    win10 superfetch是干什么的? 时间:2018-12-28 来源:莫回首系统 作者:win7 很多用户喜欢关注CPU的运行状态,来保障系统的运行速度不受影响,今早,有ghost win1 ...

  5. node学习之express(1)

    1.前提是你安装了node,npm 2.此次我学习的网站是 汇智网 3.创建一个项目学习: npm init 按照提示,输入/不输入 项目的一些信息 安装express模块:npm install e ...

  6. XSS 4

    第四题 进去后是这个样子的 然后我们随便输入第三题中的数据发现 不可以运行 看一下右边 发现()被替换成空内容 然后我们改一下  括号可以用倒引号替换 然后我们改一下 然后就通过了 原因:这个题是有关 ...

  7. AcWing 871. 约数之和

    #include <iostream> #include <algorithm> #include <unordered_map> #include <vec ...

  8. input的number类型只能输入正数,禁止负数输入

    <input type="number" max="10" min='1' id='number'> <script> document ...

  9. 删除数据高级用法:delete,truncate

    1.语法: delete 允许使用条件(删除符合条件的数据) 允许使用limit,限制删除的记录数.limit N     常见的是,limit配合order by来使用:先将结果排序,再删除固定数量 ...

  10. PHP 文件上传之如何识别文件伪装?——PHP的fileinfo扩展可!

    问题:文件上传时候需要验证上传的文件是否合法,文件伪装如何识别? 一个简单测试:把txt文件后缀直接改成jpg;上传 <!DOCTYPE html> <html> <ti ...