刷题笔记——3008.买笔

题目

3008.买笔

代码

# 方法1
x = int(input())

pen_4 = int(x/4)
surplus = x%4

if(surplus == 3):
    print('{:d} {:d} {:d}'.format(1, 1, pen_4-2))
elif(surplus == 2):
    print('{:d} {:d} {:d}'.format(1, 0, pen_4-1))
elif(surplus == 1):
    print('{:d} {:d} {:d}'.format(0, 1, pen_4-1))
else:
    print('{:d} {:d} {:d}'.format(0, 0, pen_4))
# 方法2
x = int(input())

pen_4 = int(x/4)
pen_5 = pen_6 =0

surplus = x%4

while surplus>0:
    pen_4 -= 1
    surplus += 4
    
    if surplus%5==0:
        pen_5 += 1
        surplus -= 5
    elif surplus%6==0:
        pen_6 += 1
        surplus -= 6
    
print('{:d} {:d} {:d}'.format(pen_6, pen_5, pen_4)) 

算法思想

若想让笔的数量最大,应优先购买4元的。

以4为基准求余:

  • 剩1元,则4元钱的笔少买1支,换成1支5元笔;

  • 剩2元,则4元钱的笔少买1支,换成1支6元笔;

  • 剩3元,则4元钱的笔少买2支,换成1支5元笔和1支6元笔;

本题的主要思想是 贪心算法 ,方法1属于暴力解法,方法2有待优化(循环中的三块代码操作类似,可以通过函数来处理)

参考资料

题解 3008.买笔

本文转载于网络 如有侵权请联系删除

相关文章

  • LiveNVR流媒体Onvif/RTSP/SDK拉转如何和获取通道的视频直播流地址RTSP/WebRTC/RTMP/HLS/HTTP-FLV/WS-FLV

    1、背景说明某些场景下(小区监控、厂区监控等),我们需要接入摄像头,但手头上只能获取到摄像头直播流地址,如RTSP流地址。我们可能需要将视频流发布web页面,可以用浏览器快速无插件的浏览观看。我们可能需要云台操作摄像头。我们可能需要将视频监控的视频流做集中的存储录制。此时我们可以用什么来解决,安防监控摄像头设备的接入呢?LiveNVROnvif/RTSP流媒体服务,支持RTSP等其它流拉流接入,支持Onvif协议接入,支持RTMP/HLS/HTTP-FLV/WS-FLV/RTSP/GB28181输出,将传统安防监控设备互联化,无插件直播等。可接入传统监控行业里面的高清网络摄像机的RTSP直播流,及RTMP、HTTP-FLV、M3U8等其它直播流,实现互联网直播分发;可分发多种格式流,支持GB28181注册级联到第三方国标平台;同时能实时云端存储、录像计划、检索、时移回放2、配置拉转视频流2.1RTSP规则大华、海康、宇视、华为等RTSP配置规则2.2通道配置点击通道配置进入通道配置页,可以选择需要配置的通道右上角的设置按钮,具体配置接入详见2.2启用通道勾选是否启用,点击【确定】 2.

  • 【题解】吃奶酪(剪枝优化+状态压缩)

    题目描述房间里放着n块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处。输入格式第一行有一个整数,表示奶酪的数量n。第2到第(n+1)行,每行两个实数,第(i+1)行的实数分别表示第i块奶酪的横纵坐标。输出格式输出一行一个实数,表示要跑的最少距离,保留2位小数。输入输出样例输入#14 11 1-1 -11 -1-1复制输出#17.41复制说明/提示数据规模与约定对于全部的测试点,保证小数点后最多有3位数字。提示对于两个点两点之间的距离公式为题目分析题目要我们找到能吃完所有奶酪的距离最短的路径。从暴力的角度进行考虑,只需要找出所有的道路,找到里面最短的一条路即可。不难想到可以深搜的方式去搜索解决这样的问题,设dfs(step,now,sum)表示在第step步,当前位于now这个点,已经走过的距离为sum。voiddfs(intstep,intnow,doublesum){ if(step>n){//所有奶酪吃完 if(sum<ans)ans=sum;//更新最小的走过的路径 return; } for(inti=1;i<=n

  • 和为S的连续正数序列

    题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?GoodLuck!输出描述:输出所有和为S的连续正数序列。 序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序方法一,穷举法,一重遍历,一重while,终点为num/2+1代码:publicArrayList<ArrayList<Integer>>FindContinuousSequence(intsum){ ArrayList<ArrayList<Integer>>arrs=newArrayList<>(); for(inti=1;i<(sum/2+1);i++){ ints=0; intj=i; ArrayList<Integer>arr=newArrayList<&

  • Python格式处理--cvs表格

    importcsvvillains=[['Doctor','No'],['Rosa','Klebb'],['Mister','Big'],['Auric','Goldfinger'],['Ernst','Blofeld'],]withopen('villains','wt')asfout:#一个上下文管理器  csvout=csv.writer(fout)  csvout.writerows(villains)#读取cvswithopen('villains','rt')asfin:#一个上下文管理器  cin=csv.reader(fin)  villains=[rowforrowincin]#使用列表推导式print(villains)#读取成字典方式withopen('villains'

  • 用 RSocket 解决响应式服务之间的的通讯-Part 1[译]

    本文是《用RSocket解决响应式服务之间的通讯》微型系列的第一篇文章,它将帮助你熟悉RSocket——一种可能会彻底改变机器之间通讯的新二进制协议。在以下各段中,我们首先讨论当前分布式系统的问题,然后说明如何使用RSocket解决这些问题。本文聚焦于微服务之间的通信与RSocket交互模型。分布式系统中的通讯问题确实,微服务无处不在。从部署和维护非常麻烦的单体应用程序到完全分布式、微型、可扩展的微服务,我们经历了漫长的过程。微服务架构设计有很多好处。但是,它也有缺点。首先,为了向客户交付最终产品,服务之间必须交换大量数据。在单体应用程序中这不是问题,因为它整个通信都在单个JVM进程中进行。而在“微服务架构”中,部署在单独的容器中服务需要通过内部或外部网络进行通信。此时,“网络”是一等公民。如果在云上运行应用程序,事情将变得更加复杂。在这种情况下,网络问题和延迟增加将是不可避免的事情。与其尝试解决网络问题,不如设计具有弹性的体系结构,让其即使在网络抖动的情况下也能完全正常运行,这样岂不是更好。我们来更深入地研究下微服务、数据、通信和云的概念。试想一下,对于一般的企业级系统,外部可以通过

  • 微信商城信息管理系统(java后台+小程序)

    前一段时间在公众号中发布了一套微信商城信息管理系统(java后台+小程序),也许大家可能都还记得。今天再给大家重复呈现一遍。重新梳理下,方便大家理解这是做什么用的,以便日后使用。开始正题01编写目的描述微信商城信息管理系统,它是一套完全的微信小程序+微信后台管理系统程序。02项目结构 platform-wechat-mall|--platform-admin后台管理|--platform-api微信小程序商城api接口|--platform-common公共模块|--platform-framework系统WEB合并,请打包发布此项目|--platform-gen代码生成|--platform-mp微信公众号模块|--platform-schedule定时任务|--platform-shop商城后台管理|--wx-mall微信小程序商城|--platform-vue微信公众号商城03技术选型1.后端使用技术springframework4.3.7.RELEASEmybatis3.1.0、MyBatis-Plus3.1.0shiro1.3.2servlet3.1.0druid1.0.28

  • linux 查看日志的几种基本操作

    一.查看日志方式命令格式:tail[必要参数][选择参数][文件]这个是我最常用的一种查看方式 1.tail-f循环读取 -q不显示处理信息 -v显示详细的处理信息 -c<数目>显示的字节数 -n<行数>显示行数 -q,--quiet,--silent从不输出给出文件名的首部 -s,--sleep-interval=S与-f合用,表示在每次反复的间隔休眠S秒 tail-n10test.log查询日志尾部最后10行的日志; tail-n+10test.log查询10行之后的所有日志; tail-fn10test.log循环实时查看最后1000行记录(最常用的) //一般还会配合着grep用,例如:tail-fn1000test.log|grep'关键字' 如果一次性查询的数据量太大,可以进行翻页查看, 例如:tail-n4700aa.log|more-1000可以进行多屏显示(ctrl+f或者空格键可以快捷键)复制2.headhead-n10test.log//查询日志文件中的头10行日志; head-n-10test.log//查询日志文

  • CCF-GAIR 2018 | 金融科技专场大咖名单公布!想和他们一起同行吗?

    AI科技评论消息,备受瞩目的第三届全球人工智能与机器人峰会(CCF-GAIR)将于6月29日至7月1日在深圳举办。大会由中国计算机学会主办,雷锋网承办,其中,在6月30日举办的金融科技分场,就邀请了深圳市和信中欧金融科技研究院执行院长陈邦道担任主席,并有哈尔滨工业大学管理学院院长叶强教授、牛津大学计算机科学系IvanMartinovic教授等学术嘉宾腾讯金融科技副总裁陈起儒、众安-复旦区块链与信息安全联合实验室副主任吴小川、融慧金科COO张羽、百融金服CRO季元、乐信技术副总裁史红哲等企业嘉宾为参会者分享金融科技的技术研究与成果。 本次金融科技分场嘉宾均在金融科技一线从业多年,拥有深厚的商业技术项目开发能力和经验,具备一流视野,所代表的企业也是各自领域的翘楚。此次他们将与来自国内外知名银行、监管机构支付平台、消费金融公司等金融和支付领域的大咖和精英一起,共同探讨国内外金融科技领域、移动支付、区块链、大数据、反欺诈及普惠金融等应用领域的最新突破。 以下是金融科技专场的嘉宾介绍: 叶强教授哈尔滨工业大学管理学院院长 叶强,管理学博士,哈尔滨工业大学管理学院教授、博士生导师、院长。长江学者特

  • 前端开发常用资源

    这里简单汇总一下个人常用的一些简单的前端资源的地址以及功能,方便检索,以后就不再用到svn去找了。HTML常用空白页地址:http://microdemo.bihe0832.com/res/index.html说明:一个根据HTML标准写的空白页,包含常见的httpmeta以及css和js调用方法。js浏览器判断地址:http://microdemo.bihe0832.com/res/js/brower.js说明:JS检测当前浏览器类型,此部分功能已经专门用了一个repository来描述,具体查看:https://github.com/bihe0832/MultiQrcodecss兼容性处理css地址:http://microdemo.bihe0832.com/res/css/global.css说明:关于浏览器兼容性处理的通用css,去掉li等标签的默认属性。Markdown处理后HTML使用的css地址:http://microdemo.bihe0832.com/res/css/markdown.css说明:目前文档都使用markdown来编写,但是有时候文档使用者木有markd

  • 信息安全的压力到底大不大

    0x00前言 或许我们都看到过下面这张图: 我们也经常看到新闻中各式各样的报道体现着国家对网络安全的重视。 但是似乎我们并不明白为什么如此? 恰好农夫的官网因为备案更换,临时把主机迁移到了中国香港的服务器上, 本想着临时用不了多久,那么也就不做任何的加固措施了。 服务器就这么飘扬在网络上,却不知成为了很多人心中的肥肉。 拿到了ssh爆破的日志,扔到系统里面进行日志分析,短短二周的时间,就会遇到来自全球的问候:) 0x01正文 图1为全球的统计图。 图1 若是将视野放在国内,我们会发现攻击力最大的地区依次为南昌南京杭州沈阳北京等地区。 而江西省南昌地区的IP爆破数量已经超过了50%的额度。 其中访问量最大的IP地址为218.65.30.40,数量达到17245。 那么不论是用脑子还是用脚思考,都应该明白这是要精准的达成攻击,而非互联网的批量抓鸡。 若是我们查看印度越南,我们依旧能够找到少量的攻击流量。这应该是属于传统的抓肉鸡的流量。 在欧洲,我们会发现英法列强又回来了~ 而大洋彼岸的美国,来自于纽约的流量独占鳌头,也不知道他们那边房价多少钱一平米? 而实际上,农夫的官网当上线以后,第一批

  • 动态 | Yann LeCun 怒喷 Sophia:这就是彻头彻尾的骗局

    AI科技评论按:在各种机器学习方法火热、神经网络加速芯片和生成式模型火热、研究人员们常常为优秀论文拍案叫绝的2017年中,普通大众视野中的热门人工智能成果除了AlphaGo,还有一件惊人的就是人工智能机器人Sophia。Sophia在「Tonight」节目上从2016年年底开始,初创公司HansonRobotics的人工智能机器人Sophia就活跃在各档电视节目中,用连贯自然、语意巧妙的对答和生动的表情赢来了现场嘉宾和观众们的赞叹之声。而Sophia明显显露的自我意识、“我会毁灭人类”之类的话语也引起了广泛的讨论甚至担忧,仿佛终结者的内部测试版本已经来到了这个世界上。不过,学术界并不认同Sophia是真正的人工智能。NLP领域的研究者们都有一个共识,就是哪怕目前最先进的人机对话系统也无法达到Sophia那样的语言水平,尤其是Sophia话语中不时显露的暗讽和主动掌握话题走向,都是目前的系统完全无能为力的。而Sophia这样仿佛超出普通人类的语言能力,几乎可以肯定是提前编好的对话。近日,Sophia再次来到外媒TechInsider录制了一期采访以后,深度学习大佬YannLeCun终于忍

  • 黑暗的内存管理

    黑暗的内存管理 很多人对C语言深恶痛绝,仅仅是因为C语言迫使他们在编程中必须手动分配与释放内存,然后通过指针去访问,稍有不慎可能就会导致程序运行运行时出现内存泄漏或内存越界访问。 C程序的内存泄漏只会发生在程序所用的堆空间内,因为程序只能在堆空间内动态分配内存。NULL指针、未初始化的指针以及引用的内存空间被释放了的指针,如果这些指针访问内存,很容易就让程序挂掉。 除了堆空间,程序还有个一般而言比较小的栈空间。这个空间是所有的函数共享的,每个函数在运行时会独占这个空间。栈空间的大小是固定的,它是留给函数的参数与局部变量用的。栈空间有点像宾馆,你下榻后,即使将房间搞的一团糟,也不需要你去收拾它,除非你把房间很严重的损坏了——用C的黑话来说,即缓冲区溢出。 虽然导致这些问题出现的原因很简单,但是却成为缺乏编程素养的人难以克服的障碍,被C语言吓哭很多次之后,他们叛逃到了Java、C#以及各种动态类型语言的阵营,因为这些语言将指针隐藏了起来,并提供内存垃圾回收(GC)功能。他们赢了,他们懒洋洋的躺在沙发上,拿着遥控器指挥内存,信号偶尔中断,内存偶尔紊乱。    C内存的动态分配与回

  • 孙明俊:人工智能之算力演进

    人工智能的深度崛起确实是它的原始动力,但是真正的能够让它稳固地往前走,必须是算力的演进。第十二届中国IDC产业年度大典于12月20-22日,在北京国家会议中心隆重召开。在数据中心技术创新论坛上,来自行业的多位专家齐聚于此,共同探讨数据中心的创新技术,以推动IDC行业的健康发展。中国信息通信研究院人工智能部主任、国际电信联盟机器焦点组副主席孙明俊以《人工智能之算力演进》为题,进行了主题演讲。孙明俊介绍到,人工智能正式诞生于1956年。二战期间出现了自动控制理论,推动了人工智能领域的诞生。她认为,人工智能领域一是受到自动控制领域的推进;二就是算法。1990年互联网正式起步,发展至今,已成为我们生活中必不可少的一部分,并为人工智能的发展奠定了良好的基础。孙明俊表示,具备了自动控制、互联网和算法条件后,八九十年代人工智能难以发展的原因,是算力的欠缺。她认为,人工智能的崛起有三大因素:一是互联网的发展,提供了多类型的数据资源;二是硬件技术的发展变革,降低了硬件成本的同时,缩短了运算的时间;三是深度学习算法。“深度学习算法才是人工智能崛起的基础”孙明俊说道。以AlphaGO为例,它需要1920个C

  • 腾讯云对象存储GETBucketinventoryapi接口

    功能描述GETBucketinventory接口用于查询存储桶中用户的清单任务信息。用户在发起该请求时,需要用户提供清单任务的名称,发起该请求时需获得请求签名,表明该请求已获得许可。有关清单的详细特性,请参见清单功能概述。 注意: 调用该请求时,请确保您有足够的权限对存储桶的清单任务进行操作。 存储桶所有者默认拥有该权限,若您无该项权限,请先向存储桶所有者申请该项操作的权限。 如果您指定了清单投递的前缀,COS后端会自动在您指定的前缀后边加上/。如您指定了Prefix作为前缀,则COS后端投递的清单报告路径为Prefix/inventory_report。 APIExplorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成SDK调用示例。 请求请求示例GET/?inventory&id=inventory-configuration-IDHTTP/1.1 Host:<BucketName-APPID>.cos.<Region>.myqcloud.c

  • Unity 各种旋转

    voidUpdate(){ if(Input.GetKey(KeyCode.Q)){transform.Rotate(0f,-100*Time.deltaTime*5,0f,Space.Self);} if(Input.GetKey(KeyCode.W)){transform.Rotate(0f,100*Time.deltaTime*5,0f,Space.Self);} if(Input.GetKey(KeyCode.E)){transform.Rotate(-100*Time.deltaTime*5,0f,0f,Space.Self);} if(Input.GetKey(KeyCode.R)){transform.Rotate(100*Time.deltaTime*5,0f,0f,Space.Self);} if(Input.GetKey(KeyCode.A)){transform.Rotate(0,0,-100*Time.deltaTime*5);} if(Input.GetKey(KeyCode.S)){transform.Rotate(0f,0f,100*Time.deltaT

  • css

    1,https://sjxi.cn/detil/e1c7039735204b488dfcfebef4e5ed89css选择器:后面盒子大小100%会被前面的限制 连写=与&&,逗号=或||,空格=从属关系 2,容器分为100%和真实内容超过了标签大小会强行伸出来,然后后面标签内容跟上, overflow:hidden;这个可以让他藏起来  3,高度100%占满屏幕,但是要继承上一级高度,否则就是他自己内容大小   问题如下:侧边栏没有继承100%,全部展开后会有溢出,方法是加height:100%,  overflow:"auto"在下面div加,否则new-system这个标题也跟着一起滚     对齐,  justifyContent:"space-between"两个元素时候实现float效果,三个时候平均分           wrap属性保证自动跳一行   flex1,overflow:hiden适合侧边栏填充和超出内容滚动

  • autofac通过aop对方法执行前后进行拦截(.net core)

    .netcore中,如果想要在控制器请求前和请求后输出日志,是非常好实现的,直接使用拦截器就能达到目的。但是如果想要对服务层的方法进行拦截该如何实现呢?这里介绍使用autofac的方式实现。如果对autofac的使用不熟悉可以参考:https://www.cnblogs.com/duanjt/p/16246546.html。 引入nuget包 <PackageReferenceInclude="Autofac.Extensions.DependencyInjection"Version="7.0.0"/> <PackageReferenceInclude="Autofac.Extras.DynamicProxy"Version="6.0.1"/>复制 定义接口类和实现类 //注意Intercept是核心,CacheInterception表示拦截类,后面会创建该类 [Intercept(typeof(CacheInterception))] publicinterfaceIUsersBLL { publicList<Users>GetAll()

  • android Context提供的一些有关文件的方法

    当Android的程序运行后,可以通过程序取得当下运行的程序路径,这个路径通常会在/data/data底下的packagename。这里的"packagename"即是程序的package名称。 1· publicFilegetDir(Stringname,intmode):name目录名称、mode权限,如果传入的目录不存在,系统会创建此目录,路径为“/data/data/程序PackageName/app_name”,name就是传入的name。 2· publicFilegetFileStreamPath(Stringname):name为文件名称,所取得的文件必须是放在/data/data/程序PackageName/files的文件。 3· publicFilegetFilesDir():取得“/data/data/程序PackageName/files”这个目录的File。 4· publicFileInputStreamopenFileInput(Stringname):读取文件,name为文件名不能包含路径,文件的路径为“/dat

  • CCF 201604-2 俄罗斯方块

    话不多说,直接上100分代码: #include<iostream> usingnamespacestd; struct{ intx,y; }pos[4]; intpage[21][10]; intblock[4][4]; intIndex=0; intn,final=20; intmain(){ for(inti=0;i<15;i++){ for(intj=0;j<10;j++){ cin>>page[i][j]; } } for(inti=15;i<20;i++){//将下面四行的内容都变为1 for(intj=0;j<10;j++){ page[i][j]=1; } } for(inti=0;i<4;i++){ for(intj=0;j<4;j++){ cin>>block[i][j]; if(block[i][j]==1){ pos[Index].x=3-i; pos[Index].y=j; Index++; } } } cin>>n; n=n-1; for(inti=4;i<2

  • 645. 错误的集合 (丢失了一个数字 并且 有一个数字重复)

      labuladong题解思路 难度简单286收藏分享切换为英文接收动态反馈 集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代表了集合 S 发生错误后的结果。 请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。   示例1: 输入:nums=[1,2,2,4] 输出:[2,3] 复制 示例2: 输入:nums=[1,1] 输出:[1,2] 复制       classSolution{ public: vector<int>findErrorNums(vector<int>&nums){ //如果在数组的n个数字后面再添加从1到n的每个数字,得到2n个数字,则在2n个数字中,重复的数//

  • 响应式布局

    随着互联网的快速发展,HTML5迅速崛起,响应式布局也慢慢的被广泛的运用起来,身为之后的Web前端人员,我觉得应该要掌握“响应式布局”。  响应式布局,简单点说就是做一个网站而能多终端多平台运行的由一个网站转化为多个网站,为我们大大节省了资源。  那么响应式布局有什么优缺点呢?优点:  1.响应式布局面对不同的分辨率设备灵活性强。     2.能够快捷解决多设备显示适应问题。缺点:    1.兼容各种设备工作量大,效率低下。     2.代码累赘,会出现隐藏无用的元素,加载时间加长。     3.其实这是一种折衷性质的设计解决方案,多方面因素影响而达不到最佳效果。     4.一定程度上改变了网站原有的布局结构,会出现用户混淆的情况。          可能有些人还是不明白响应式布局应该怎么去做,以及它的开发原理是什么?原理:简单点说响应式布局它是通过CSS中Media Query @media功能来判断沃恩的终端设备宽度是多少像素,然后执行对应的CSS样式

相关推荐

推荐阅读