【Python CheckiO 题解】Feed Pigeons


CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。

CheckiO 官网:https://checkio.org/

我的 CheckiO 主页:https://py.checkio.org/user/TRHX/

CheckiO 题解系列专栏:https://itrhx.blog.csdn.net/category_9536424.html

CheckiO 所有题解源代码:https://github.com/TRHX/Python-CheckiO-Exercise


题目描述

【Feed Pigeons】:此题任务是模拟喂鸽子,最开始只有 1 只鸽子,1 分钟后飞来 2 只鸽子,再过 1 分钟飞来了 3 只,以此类推(1+2+3 +4+…),1 份饲料可以让鸽子吃 1 分钟,如果没有足够的食物,会让先到的鸟先吃,鸽子永远不会停止进食,如果我有 N 份饲料,有多少鸽子至少吃到一份饲料?

举例:我有 5 份饲料

第 1 分钟:只有 1 只鸽子 A,先给 A 喂 1 份,还剩下 4 份饲料;
第 2 分钟:原来有鸽子 A,又飞来两只鸽子 B 和 C,先给 A 喂 1 份,再给 B 和 C 各喂 1 份,还剩下 1 份饲料;
第 3 分钟:原来有鸽子 A、B、C,又飞来 3 只鸽子 D、E、F,给 A 喂 1 份,饲料喂完;

此时:A 吃了 3 次饲料、B 和 C 吃了 1 次饲料,D、E、F 没有吃到饲料,所以返回结果为 3。
在这里插入图片描述

【链接】:https://py.checkio.org/mission/feed-pigeons/

【输入】:饲料的份数(int)

【输出】:已经喂食过的鸽子的数目(int)

【前提】:0 < N < 105

【范例】

checkio(1) == 1
checkio(2) == 1
checkio(5) == 3
checkio(10) == 6

代码实现

def checkio(number):fed = minute = pigeons = 0while number >= 0:number -= pigeonsminute += 1if number <= 0:return fedif minute < number:fed += minutenumber -= minuteelse:fed += numberreturn fedpigeons += minutereturn fedif __name__ == '__main__':# These "asserts" using only for self-checking and not necessary for auto-testingassert checkio(1) == 1, "1st example"assert checkio(2) == 1, "2nd example"assert checkio(5) == 3, "3rd example"assert checkio(10) == 6, "4th example"

大神解答

大神解答 NO.1

"""Determine the number of (greedy) pigeons who will be fed."""
import itertoolsdef checkio(food):"""Given a quantity of food, return the number of pigeons who will eat."""pigeons = 0for t in itertools.count(1):if pigeons + t > food:# The food will be consumed this time step.# All pigeons around last time were fed, and there is enough food# this time step to feed 'food' pigeons, so return the max of each.return max(pigeons, food)# Increase pigeons, decrease food.pigeons += tfood -= pigeons

大神解答 NO.2

def checkio(number):sum = 0m = 1n = 0while(sum < number):n = m*(m+1)/2sum = sum + nm = m + 1if (sum - number) >= m-1:return (m-2+1)*(m-2)/2else:return n - (sum - number)

大神解答 NO.3

def checkio(food):birds = new = 0while food > 0:new += 1birds += newfood -= birdsreturn birds + max(food, -new)

大神解答 NO.4

def allpigeon(min):if min==0:return 0return allpigeon(min-1)+mindef allneed(min):if min==0:return 0    return allneed(min-1)+allpigeon(min)    def checkio(number):i=0while allneed(i)<=number:i+=1cur=number-allneed(i-1)if cur>allpigeon(i-1):return curreturn allpigeon(i-1)

大神解答 NO.5

def checkio(n):                               # explanation follows...p = lambda t: t * (t+1) // 2q = lambda t: (t*t*t + 3*t*t + 2*t) // 6h = 9*n*n - 1/27R = 3*n + h**(1/2)T = 3*n - h**(1/2)X1 = R**(1/3) + T**(1/3) - 1w = int(X1)return p(w) + max(0, n-q(w)-p(w))"""p(t): number of of pigeons at round tp(1) = 1p(n) = p(n-1) + np(n) = 1 + 2 + 3 + ... + n = n*(n+1)/2q(t): number of portions to feed all pigeons in the first t roundsq(t)= \sum_{i=1}^{n} p(i)= 1/2 * \sum_{i=1}^{n} n^2 + 1/2 * \sum_{i=1}^{n} n= 1/2 * n * (n+1) * (2*n+1) / 6 + 1/2 * n * (n+1) / 2= 1/12 * (2*n^3 + 3*n^2 + n) + 1/4 * (n^2 + n)= 1/12 * (2*n^3 + 3*n^2 + n + 3*n^2 + 3*n)= 1/12 * (2*n^3 + 6*n^2 + 4*n)= 1/6 * (n^3 + 3*n^2 + 2*n)Suppose we start with N portions and w full rounds of pidgeons are fed:q(w) <= N
<=> w^3 + 3*w^2 + 2*w - 6*N <= 0Single real root is calculated by:a = 1, b = 3, c = 2, d = -6*Nf = (3*c/a - b*b/a/a)/3g = (2*b*b*b/a/a/a - 9*b*c/a/a + 27*d/a)/27h = g*g/4 + f*f*f/27R = -(g/2) + h**(1/2)S = R**(1/3)T = -(g/2) - h**(1/2)U = T**(1/3)X1 = S + U - b/3/atheferore:  w = int(X1)We can feed p(w) pidgeons and we are left with N - q(w) portions for round w+1.
But the first p(w) pidgeons in round w+1 have already been fed.
So, if N - q(w) > p(w), we can feed N - q(w) - p(w) more pidgeons.
"""

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用VS code 创建 Azure Functions,从blob触发,解析,发送至Service Bus

场景: 某设备定时于每天23&#xff1a;00左右将一天的运行日志.devicelogtxt上传到Azure Blob&#xff0c;期待Blob文件上传后, 自动通过Azure Functions 解析文件并将文件内容写入到服务总线Service Bus的队列中。 上传的文件格式为&#xff1a; 步骤&#xff1a; 下载并安装…

Power Platform之Power Automate新增RPA功能

​ 什么是RPA RPA&#xff08; Robotic Process Automation 机器人流程自动化软件&#xff09;&#xff0c;是一种新型的人工智能的虚拟流程自动化机器人。RPA的核心是通过自动化、智能化技术来“替代人”进行重复性、低价值、无需人工决策等固定性流程化操作&#xff0c;从而…

Hyper-V第1代虚拟机和第2代虚拟机特性对照表

本文《Hyper-V第1代虚拟机和第2代虚拟机特性对照表》系小编在小伟博客看到的文档&#xff0c;转载给大家一起学习。 在 Windows Server 2012 R2 和 Windows 8.1 中内置的 Hyper-V 功能&#xff0c;新增了一种“第二代”虚拟机&#xff0c;从虚拟硬件的层面进行了提升&#xff0…

【转】五大方法,彻底永久关闭win10自动更新的方法【已验证有效】

自从微软大面积使用某员工后&#xff0c;思路越来越奇葩了&#xff0c;前天工作没做完&#xff0c;放在那里&#xff0c;第二天毫无羞耻的就给你重启了&#xff0c;那一瞬间&#xff0c;真想拿dollar到对面slay。于是就有下文&#xff0c;大部分内容是从网上摘录、归纳起来的。…

【Python CheckiO 题解】Probably Dice

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

Dynamics CRM 2016 安装

Dynamics CRM 2016 安装 CRM 2016出来了一段时间了&#xff0c;一直也没机会尝试一下&#xff0c;现在再测试ADFS的时候顺手装一个测试环境&#xff0c;记录一下整个安装配置流程。 首先准备好windows 2012 std&#xff0c;sql server 2014&#xff0c; dynamics crm2016安装…

【Python CheckiO 题解】Largest Rectangle in a Histogram

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

Dynamics 365 on-premises 安装

安装Dynamics 365环境配置要求&#xff1a; 系统版本&#xff1a;Windows Server 2016 SQL 版本&#xff1a; Microsoft SQL Server 2016 SP2 Dynamics 365 版本&#xff1a;CRM9.0-Server-CHS-amd64 安装步骤&#xff1a; 一.在虚拟机安装Windows Server 2016 二.安装好…

【Python CheckiO 题解】Date and Time Converter

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

2.1Dynamics 365 安装问题——无法访MSCRM_CONFIG数据库

1&#xff0e; 问题 2&#xff0e; 原因 出现此问题的一个或多个下列条件都为真︰ 在多务器中安装 Microsoft Dynamics 365。然后&#xff0c;直接在运行 Microsoft SQL Server 的服务器上安装 Microsoft Dynamics 365。但是&#xff0c;没有设置某些 SQL Server 权限。Mic…

【Python CheckiO 题解】Army Battles

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

华中科技大学文华学院 CSDN 高校俱乐部成立啦!

CSDN高校俱乐部是由中国专业的IT社区 CSDN&#xff08;Chinese Software Develop Net&#xff09;发起的&#xff0c;由全国各高校在校生代表自发加入的 IT 技术学习型组织。CSDN 由此搭建起行业与校园之间的桥梁&#xff0c;公益为各俱乐部提供行业资讯、技术学习、专家交流、…

2019年总结【跨越今天,更不平凡】

还记得小时候写作文&#xff0c;畅想2020会怎样怎样&#xff0c;光阴似箭&#xff0c;2020真的来了&#xff0c;度过了艰难的考试周&#xff0c;抽了个晚上&#xff0c;回想了一下&#xff0c;决定写一写总结吧&#xff0c;似乎以前都没写过呢&#xff0c;那干脆连带2017、2018…

Hexo博客:您备案的网站未指向阿里云国内节点(不含香港)服务器,备案号可能被取消接入

问题描述&#xff1a;经检查您的网站域名 xxxxxx 未指向阿里云国内节点&#xff08;不含香港&#xff09;服务器且无访问记录 &#xff0c;依据工信部相关法规规定属于空壳网站&#xff0c;请您尽快将域名解析IP地址指向阿里云国内节点&#xff08;不含香港&#xff09;服务器。…

【转】win10录屏快捷键报错显示需要新应用打开ms-gamingoverlay

Win10 截图快捷键 winshift s Win10 录屏快捷键 winG &#xff0c;提示&#xff1a;需要新应用打开此ms-gamingoverlay 这也是因为被你卸载了Xbox相关的应用或者文件&#xff0c;所以无法启用了。解决办法如下&#xff1a; 1.管理员方式运行powershell 快捷键&#xff1a;ct…

【转】Microsoft Cloud全新认证体系介绍

IT认证&#xff0c;是IT技术从业者必不可少的一个敲门砖&#xff0c;有了它让甲方、乙方以及原厂对你有了基本的了解&#xff0c;能够初步预判您是否胜任这一工作岗位。例如&#xff0c;大家耳熟能详的Microsoft MCSE&#xff0c;RedHat RHCE&#xff0c;VMware VCP、CISSP、CI…

【转】azure认证路线以及学习资源

Azure认证路线 考取AZ-300以及AZ-301 学习资源https://docs.microsoft.com/zh-cn/azure/https://docs.microsoft.com/zh-cn/learn/paths/azure-fundamentals/ 考试指南https://www.microsoft.com/zh-cn/learning/exam-AZ-300.aspxhttps://www.microsoft.com/zh-cn/learning/…

【转】Dynamics CRM 365零基础入门学习(一)Dynamics介绍以及开发工具配置

由于公司CRM平台从Salesforce向Dynamic 365转型&#xff0c;因此全身心投入学习了几天Dynamic 365&#xff0c;国内相关的资料很少&#xff0c;所以总结这几天学到东西&#xff0c;以避免初学者走弯路。 本章分享内容介绍 1.Dynamics的学习资料 2.Dynamics账号注册 3.Visual …

【转】Dynamics CRM 365零基础入门学习(二)Dynamics 插件注册的基本流程

插件的官方定义是&#xff1a;插件是可与 Microsoft Dynamics CRM 365 和 Microsoft Dynamics CRM Online 集成的自定义业务逻辑&#xff08;代码&#xff09;&#xff0c;用于修改或增加平台的标准行为。也可以将插件认为是针对 Microsoft Dynamics CRM 触发的事件的处理程序。…