【Python CheckiO 题解】Count Consecutive Summers


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


题目描述

【Count Consecutive Summers】:一个正整数可以用几个连续的正整数之和来表示,例如,正整数42,可以有四种方法来表示:(1)3 + 4 + 5 + 6 + 7 + 8 + 9、(2)9 + 10 + 11 + 12、(3)13 + 14 +15、(4)42,其中第四种方法表示该正整数仅由其本身组成,你的任务是计算有多少种表示方法。

【链接】:https://py.checkio.org/mission/count-consecutive-summers/

【输入】:整数

【输出】:整数

【前提】:输入始终是一个正整数

【范例】

count_consecutive_summers(42) == 4
count_consecutive_summers(99) == 6

代码实现

def count_consecutive_summers(num):n = 0for i in range(1,num+1):m = iwhile m < num:i,m = i+1,m+i+1if m == num:n += 1return nif __name__ == '__main__':print("Example:")print(count_consecutive_summers(42))# These "asserts" are used for self-checking and not for an auto-testingassert count_consecutive_summers(42) == 4assert count_consecutive_summers(99) == 6assert count_consecutive_summers(1) == 1print("Coding complete? Click 'Check' to earn cool rewards!")

大神解答

大神解答 NO.1

count_consecutive_summers = lambda n: sum(not n%k for k in range(1, n+1, 2))

大神解答 NO.2

def count_consecutive_summers(num):# s + (s + 1) + (s + 2) + ... + (s + n)# = (n + 1) * s + n * (n + 1) / 2 = num# s = (num - n * (n + 1) / 2) / (n + 1)# we need denominator of s is divisible by n + 1count = 0for n in range(0, num): # we move nd = num - n * (n + 1) // 2 # calculate denominatorif d <= 0: breakif d % (n + 1) == 0: # s is integer?count += 1return count

大神解答 NO.3

def count_consecutive_summers(num):ways = 0for i in range(1, num + 1):n = 1 - 2 * i + ((2 * i - 1) ** 2 + 8 * num) ** (1/2)if n % 1 == 0:ways += 1return ways

大神解答 NO.4

count_consecutive_summers=lambda n:sum([n%b*2==b-b%2*b for b in range(1,int((2*n)**.5)+1)])
"""
Is this really working?
Yes it is, it's one of the shortest code to solve the problem and
it's doing it very efficiently as well2nd version
-----------
How does it work:
sum from p to p+a when p and a are integers is (2p+a)*(a+1)/2
so n=(2p+a)*(a+1)/2
so 2p+a=2n/(a+1)
finally p=(2n-a-a^2)(2*(a+1))
replacing a+1 with b
p=(2n-b(b-1))/2b
and we know that p should b an integer, which means that 2n-b(b-1)%(2b)==0
or 2n%(2b)==b(b-1)%(2b)
Left part can be reduce to n%b*2
Right part can be reduce to (b-1)%2*b which can be written b-b%2*b for 2 characters lessValues for a are from a=0 (sum of a single value) to a=0.5*(-1+sqrt(1+8*n)) when we have the lonest sum of numbers
This value does not make a nice 'golf' code, but 0.5*(-1+sqrt(1+8*n)) is just slightly smaller than sqrt(2n)
for n=1 000 000, this means that the program will evaluate a up to 1414 instead of 1413, acceptable trade off for a shorter code :)
Values for b are therefore from 1 to sqrt(2n)+12nd version uses:
- b in place of a+1 for a lot of save characters
- modulo instead of int(x)==x to define if x is integer, greatly save chars but it's much faster (20-30%)It was a great exerice so found a way to solve it for both code size and speed
"""

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

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

相关文章

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

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

【Python CheckiO 题解】Speech Module

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

Dynamics 365 Online和On-premises在开发方式上的差别

1、新建账号的不同&#xff1a;on-premises(下文简称op)是和ad绑定的&#xff0c;所以必须先在ad中新建账号后才能在CRM中新建。而online是和Office365(下文简称O365)绑定的&#xff0c;所以需在O365中新建账号再分配D365许可(前提是已购买license),当分配完许可后&#xff0c;…

【Python CheckiO 题解】Time Converter (12h to 24h)

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

【转】Dynamics 365 On-Premise Server v9.0部署体验

期盼已久的Dynamics 365 On-Premise的版本升级终于在11月初姗姗来迟。 11月2日起已经可以在官方渠道下载正式版的Dynamics 365 Server v9.0安装文件&#xff0c;版本号9.0.2&#xff0c;随手附上中文版安装文件下载地址。 想必已经有不少小伙伴开始尝试各种升级、安装了吧。 …

【Python CheckiO 题解】Multicolored Lamp

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

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

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

【Python CheckiO 题解】Probably Dice

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

【Python CheckiO 题解】Roman Numerals

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…

Dynamics 365 On-premises和Online 的不同

1、新建账号的不同&#xff1a;on-premises(下文简称op)是和ad绑定的&#xff0c;所以必须先在ad中新建账号后才能在CRM中新建。而online是和Office365(下文简称O365)绑定的&#xff0c;所以需在O365中新建账号再分配D365许可(前提是已购买license),当分配完许可后&#xff0c;…

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

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

4.Dynamics CRM 数据数量限制更改

1.在CRM2016中如果想要导出超过10000记录数据&#xff0c;更新 MaxRecordsForExportToExcel 这个字段的值。 SELECT MaxRecordsForExportToExcel FROM [FCCRM_MSCRM].[dbo].[OrganizationBase] 2.列表页面&#xff0c;最大显示的数量 5000&#xff0c;修改 DeploymentProper…

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

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

【转】LCS和LCS服务器应用程序概述

Live Communication Server 2005&#xff08;以下简称LCS&#xff09;是微软最新推出的企业即时消息服务器&#xff0c;使用业界标准的SIP协议。本文介绍LCS及LCS服务器应用程序。目录 1. 1. LCS2005概览 1.1 Live Communications Server 2005是什么&#xff1b; 1.2 …