P8682 [蓝桥杯 2019 省 B] 等差数列 Python

[蓝桥杯 2019 省 B] 等差数列

题目描述

数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N N N 个整数。

现在给出这 N N N 个整数,小明想知道包含这 N N N 个整数的最短的等差数列有几项?

输入格式

输入的第一行包含一个整数 N N N

第二行包含 N N N 个整数 A 1 , A 2 , ⋯ , A N A_1,A_2,\cdots,A_N A1,A2,,AN。(注意 A 1 ∼ A N A_1 ∼ A_N A1AN 并不一定是按等差数列中的顺序给出 )。

输出格式

输出一个整数表示答案。

样例 #1

样例输入 #1

5
2 6 4 10 20

样例输出 #1

10

提示

包含 2,6,4,10,20 的最短的等差数列是 2,4,6,8,10,12,14,16,18,20

对于所有评测用例, 2 ≤ N ≤ 1 0 5 2 \le N \le 10^5 2N105 0 ≤ A i ≤ 1 0 9 0 \le A_i \le 10^9 0Ai109

蓝桥杯 2019 年省赛 B 组 H 题。

思路

因为给定数据是无序的,若是想知道数据之间的联系,肯定是要排序的。
最开始的想法是求除相邻数的差,最小值即为公差。但这种思路是错误的,比如 【2 6 12 20 30】 最小值是4,但公差应为2 所以我们继续考虑这些差值有什么联系
【4,6,8,10】 他们的最大公因数应为2 ,所以差值的最大公因数应该是公差。

在本代码中,并没有对所有相邻数的差值求最大公因数,只选取了0,1,和最后一个数,求差值的公差d,所以单靠该条件无法判断公差。

所以用差值的最小值num_d与d比较,若相等,则用等差数列公式求n,若不等,则用最小值求。

另外需要注意的是,题目要求长度最短,所以在给定数据中,最大值和最小值即为首项和尾项;若num_d和d = 0时,需要特殊讨论,公差为0,比如【2,2,2,2,2】;获取的n的值,即为等差数列的项数。

import math  
n = int(input())
a = list(map(int,input().split()))
a.sort()
num_d = math.inf
# print("num_d is",num_d)
if len(a)==2:num = 2
else:   for i in range(1,len(a)-1):if num_d > a[i] - a[i-1]:num_d = a[i] - a[i-1]d = math.gcd(a[-1]-a[0],a[1]-a[0])if num_d == d and d!=0:num = (a[-1] -a[0]) /d +1elif num_d == d==0:num = nelse:num = (a[-1] -a[0]) /num_d + 1
# print(d)
print(int(num))

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

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

相关文章

DXP学习1-使用DXP软件创建工程并熟悉相关操作

目录 实验内容(任务) PCB项目文件及原理图文件的创建及保存: 熟悉窗口界面、主菜单、各工具栏及图纸参数的设置: 首先先通过"纸张选择"做如下修改 修改纸张大小👇 修改标题栏的格式👇 修改…

js拖动上传

在现代的Web开发中,拖动上传是一项非常常见且实用的功能。本文将向你介绍如何使用JavaScript实现拖动上传,并深入解析相关的API、代码调用方法以及注意事项。希望通过本文的科普,能帮助你更好地理解和应用这一功能。 实现拖动上传的API&#…

QT5.14.2 揭开Qt5原对象系统的神秘面纱,解锁应用开发的无限大门

Qt框架作为C跨平台应用程序开发的利器,其强大的功能和优雅的设计理念令无数开发者叹为观止。而在Qt5中,全新的元对象系统更是将其发挥推向了一个全新的高度,今天,就让我们一起揭开这层神秘的面纱,探索其中蕴含的无限可…

设计模式-访问者(Visitor)模式详解和应用

文章目录 前言访问者模式介绍访问者模式优缺点访问者模式包含的主要角色应用场景代码示例访问者模式的扩展总结 前言 最近在做一个根据数学表达式生成java执行代码的功能,其中用到了访问者模式。使我对访问者模式有了更深入的理解。故写下此篇文章分享出来&#xf…

生命源集团2024全球品牌发布会成功举办

生命源集团2024全球品牌发布会圆满落幕 3月20日,生命源集团在杭州隆重举办了主题为“生命源启,荣耀之巅”的2024全球品牌发布会。 活动伊始,嘉宾们陆续签到入场,现场气氛热烈而庄重。随后,生命源集团十二大事业部总裁…

6.2 ServiceNow 自动化测试框架 (ATF)

6.2 自动化测试框架 ATF 目录一、自动化测试框架 (ATF) 简介1. Automated Test Framework(ATF)2. 使用自动化测试框架 (ATF)的好处: 二、 ATF的测试类型1. 功能业务逻辑测试2. 回归测试3. 浏览器兼容性测试4. 服务器端 Jasmine测试 三、 ATF测…

详解:创业老阳推荐的Temu蓝海项目还能赚钱吗?

在当前全球化的背景下,跨境电商行业日益繁荣,成为了许多创业者关注的焦点。其中,Temu项目凭借其独特的商业模式和强大的市场潜力,备受瞩目。尤其是当知名创业导师老阳推荐Temu项目时,更是激起了广大创业者的热情和好奇…

机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

应急响应-Linux(1)

应急响应-Linux(1) 黑客的IP地址 思路: 一般系统中马之后会有进程连接黑客的主机,可以使用netstat -anpt查看下当前进程的连接,此处查看到没有后 ,可以从系统服务开始查找,系统的服务日志一般都会保存相关访问信息&…

SAP CAP篇十五:写个ERP的会计系统吧,Part II

本文目录 本系列文章目标开发步骤数据库表设计初始数据初始数据:AccountCategories初始数据:AccountUsages初始数据:ChartOfAccounts初始数据:AccountSubjects Service 定义生成Fiori AppApp运行 本系列文章 SAP CAP篇一: 快速创…

P8597 [蓝桥杯 2013 省 B] 翻硬币 Python

[蓝桥杯 2013 省 B] 翻硬币 题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果…

mysql 学习

本文来自于《sql必知必会》 所需要的文件教程连接 本站其他的小伙伴 第一课 了解sql 数据库基础 什么是数据库 数据库(database) 保存有组织的数据的容器(通常是一个文 件或一组文件)。 表 表(table)…

npm常用命令详解

npm(Node Package Manager)是 Node.js 的包管理器,用于管理项目中的依赖(libraries, frameworks, tools)。以下是一些 npm 的常用命令及其详解: 1. npm init 作用:初始化一个新的 Node.js 项目…

MQTT Keep Alive机制

MQTT 协议是承载于 TCP 协议之上的, 而 TCP 协议以连接为导向, 在连接双方之间, 提供稳定、 有序的字节流功能。 但是, 在部分情况下, TCP 可能出现半连接问题。 所谓半连接, 是指某一方的连接已经断开或者…

【ppt技巧】PPT转换为图片,方法有哪些?

想要将ppt文件转换为图片,其实很简单,一起来看一下如何操作吧! 方法一: 使用格式转换器,有些文件格式转换器,支持ppt转换为图片。 方法二: 不需要转换器,直接在ppt中进行操作即可…

Java基础知识总结(9)

快速排序 3 1 2 5 4 6 重复第一轮的过程,应该得到如下序列: 2 1 3 5 4 6 OK,现在3已经归位。接下来需要处理3左边的序列: 2 1 3 6 处理之后,2已经归位,序列“1”只有一个数,也不需要进行任何…

可观测性体系建设后,该如何挖掘数据及工具价值?

在现代企业的运维管理中,构建高效且可靠的可观测性体系是保障系统稳定性和业务连续性的关键。然而,运维团队成员的技术能力参差不齐往往成为实现这一目标的障碍。尤其在处理复杂系统故障时,高度依赖专业知识和经验的可观测性工具很难被全员有…

j-vxe-table设置

1.设置按键回车箭头tab健设置 :mouse-config"{selected: true}" :keyboard-config"{ isArrow: true, isEnter: true, isEdit: true,isTab:true}" 2 表格编辑设置 :edit-config"{trigger: this.triggerFlag, mode: row, showIcon: false , active…

Java 基础 反射

什么是反射? 反射是各类框架的灵魂,允许我们在JVM运行时提供分析类,操作类的能力。 反射是一种在运行时检查和修改类、方法、属性等程序结构的能力。通过反射,可以动态地获取和操作程序的元数据,包括类的字段、方法、…

如何用 C++ 部署深度学习模型?

深度学习模型通常在诸如Python这样的高级语言中训练和验证,但在实际生产环境部署时,往往需要更高的执行效率和更低的资源占用。C作为一款性能卓越、低级别的编程语言,是部署深度学习模型的理想选择之一。本文将详细介绍如何在C环境下加载和运…