当前位置: 首页 > news >正文

【蓝桥杯省赛真题52】python连续正整数和 第十五届蓝桥杯青少组Python编程省赛真题解析

python连续正整数和

第十五届蓝桥杯青少年组python比赛省赛真题详细解析

博主推荐

  • 所有考级比赛学习相关资料合集【推荐收藏】

1、Python比赛

  • 信息素养大赛Python编程挑战赛

  • 蓝桥杯python选拔赛真题详解

  • 蓝桥杯python省赛真题详解

  • 蓝桥杯python国赛真题详解

2、Python考级

  • python等级一级真题解析【电子学会】

  • python等级二级真题解析【电子学会】

  • python等级三级真题解析【电子学会】

  • python等级四级真题解析【电子学会】

一、题目要求

(注:input()输入函数的括号中不允许添加任何信息)

1、编程实现

给定一个正整数 n,请计算n最多可以由多少个连续(2个及以上)的正整数相加得到,如果n不能由连续的正整数相加得到,则输出-1。

例如:n=100;100 可以由以下2组连续的正整数相加得到。

第一组:9、10、11、12、13、14、15、16;

第二组:18、19、20、21、22;

100 最多可以由 8个连续的正整数相加得到,输出8。

例如:n=8, 8不能由连续的正整数相加得到,输出-1。

2、输入输出

输入描述:只有一行,一个正整数n(3≤n≤10^8)

输出描述:只有一行,一个整数,表示 n最多可以由多少个连续的正整数相加得到;如果n不能由连续的正整数相加得到,则输出 -1。

输入样例:

100

输出样例:

8

二、算法分析

  1. 目标:输入n,得到最多可以由多少个连续的正整数相加
  2. 策略:可以先分析一下连续正整数相加的规律,如果有i个连续的正整数相加,起始数字为k,可以表示为:n=k+(k+1)+(k+2)+...+(k+i-1)
  3. 将上面等式化简可以得到:i * (2k + i - 1) / 2 = n,进而得到:2n=i * (2k + i -1)
  4. 由于k是整数,所以2k+i-1大于i,所以2n>i*i,得到 i<sqrt(2n)
  5. 接着就可以遍历每个i从2开始一直到sqrt(2n),检查 (2n-i*(i-1)) 是否能被 2i 整除,并且满足除完之后为正整数,如果找到这样的i就是满足条件的,否则输出-1

本文作者:小兔子编程 作者首页:小兔子编程-CSDN博客

三、程序编写

n = int(input())
res = -1
m = int((2 * n) ** 0.5)
for i in range(2, m + 1):num = 2 * n - i * (i - 1)if num <= 0:breakif num % (2 * i) == 0:k = num // (2 * i)if k > 0:res = i
print(res)

四、程序说明

  1. 利用input输入函数从键盘获取输入数据
  2. 利用int函数将n转换成整数类型
  3. 利用数学求和公式得到i的最大取值为2n的开平方
  4. 连续求和的个数必须是从2个数开始
  5. 利用for循环遍历连续求和的个数,从2开始到最大
  6. 接着num是由求和公式变形而来,得到的是分子,必须是大于0,同时对应的分母就是2*i
  7. 所以必须满足能被整除,最后只要整除的数字大于0,则最大的个数就是i
  8. 利用分支语句if对数字进行校验是否满足条件
  9. 最后通过print函数输出即可

五、运行结果

100
83
2

六、考点分析

难度级别:难,这题相对小朋友们来说有一定的难度,难在数学公式的应用,具体主要考查如下:

  1. 学会分析题目,找到解题思路
  2. 学会简单的算法知识的应用
  3. input函数:Python 中 input() 函数接受一个标准输入数据,返回为 string 类型。
  4. int函数:强制将传入对象转换成整数类型
  5. 学会数学求和公式的使用,以及相应变形公式的应用
  6. 学会for循环的使用:for循环可以遍历任何有序的项及列表元素等等。
  7. range函数:rang(a,b),循环的时候是不包括b的,所以我们这个案例中要转变一下,要想包含b,就应该写成range(a,b+1)
  8. 学会if...条件判断语句的使用:满足条件才执行相应的程序
  9. print函数:用于打印输出,最常见的一个函数。
  10. 充分掌握for循环和数学求和公式及分支语句的使用

PS:方式方法有多种,小朋友们只要能够达到题目要求即可!

相关文章:

  • 历史数据分析——宁波海运
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Expanding Cards (展开式卡片)
  • 产品周围的几面墙
  • 大模型中的Token机制深度解析
  • [ctfshow web入门] web122
  • 安全漏洞频发,如何加强防护措施?
  • IntelliJ IDEA设置编码集
  • 普通用户的服务器连接与模型部署相关记录
  • 代码随想录算法训练营 Day49 图论Ⅰ 深度优先与广度优先
  • 基于 Zookeeper 部署 Kafka 集群
  • Linux系统:ext2文件系统的核心概念和结构
  • 什么是open BMC?
  • GO语言(一期)常用关键字总结
  • C++学习:六个月从基础到就业——C++17:结构化绑定
  • 数据治理进阶:精读62页数据治理体系建设文档【附全文阅读】
  • 二十一、案例特训专题4【数据库篇】
  • Vue3进行工程化项目,保姆级教学(编译软件:vscode)大部分编译平台适用
  • EmuEdit
  • JAVA EE(进阶)_进阶的开端
  • IS-IS 中间系统到中间系统
  • 调查:“网约摩的”上线起步价五六元,合规性及安全性引质疑
  • 中美博弈新阶段,这个“热带中国”火了
  • LPR名副其实吗?如果有所偏离又该如何调整?
  • 《缶翁的世界》首发:看吴昌硕等湖州籍书画家的影响
  • 因救心梗同学缺席职教高考的姜昭鹏顺利完成补考
  • 解放日报:“感觉全世界人都在上海买买买”