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

每日一练-等差数列

等差数列

        • 🍀题目描述
        • 🌿解题思路
        • 🌸Python源码
        • 📧Summary


📆Date: 2023年2月10日
🎬Author: 小 y 同 学
📃Classify: 蓝桥杯每日一练
🔖Language: Python


🍀题目描述

  • 题意
      数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数。
      现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?

  • 输入格式
      输入的第一行包含一个整数 N。
      第二行包含 N 个整数 A1, A2, · · · , AN。(注意 A1 ∼ AN 并不一定是按等差数列中的顺序给出)

  • 输出格式
      输出一个整数表示答案。

  • 样例输入

5
2 6 4 10 20
  • 样例输出
10
  • 样例说明
      包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、18、20。

  • 评测用例规模与约定
      对于所有评测用例,2 ≤ N ≤ 100000,0 ≤ Ai ≤ 109。


🌿解题思路

  • 题目梳理
      题目会给出一串数字,我们需要做的就是找出包含这些数字的等差数列,且这个等差数列的项数最小,注意我们要输出的是等差数列的项数,不是等差数列的元素或者其求和。
  • 核心处理
      首先给出的数字串是没有顺序的,我们首先肯定是想到将给出的数字排序。然后我们要做的就是寻找公差:起初小y想的是排序完的数组每相邻两项做差,然后最小的就是公差,但是仔细一想:如果排序完的数组中的相邻两项差一个是2,一个是3:例如数组:1、3、6;要想组成等差数列,必须以1为公差;随后就想到了取2和3的最大公因数也就是1来作为公差;同样的思路,就可以类比出给出的任意数列对应的公差。随后就是求项数,给出的数列最小的和最大的一定是等差数列的首尾项,我们可以由an=a1+(n−1)×da_n=a_1+(n-1)\times dan=a1+(n1)×d推导出n=an−a1d+1n=\frac{a_n - a_1}{d}+1n=dana1+1,但是我们要注意d为0的情况分开讨论!

🌸Python源码

# _*_coding:utf-8_*_
# created by cy on 2023/2/10
import math# 求最大公因数
def gcd_many(li, n):
g = 0
for i in range(n):if i == 0:g = li[i]else:g = math.gcd(g, li[i])
return gn = int(input())
A = list(map(int, input().split()))
A.sort()
d_li = []
for i in range(n - 1):
d_li.append(A[i + 1] - A[i])
if min(d_li) == 0:  # 公差为0的情况
print(n)
else:
d = gcd_many(A, n)
print(int((A[-1] - A[0]) / d + 1))

📧Summary

  小y的今日一练到此画上了句号,欢迎友友们多给建议🌼🌼🌼
  有兴趣一起学习编程的小伙伴可以私聊小y一起学习,小y在Python,c/c++和matlab语言上均有一定的基础😜😜😜


欢迎您的点赞👍+收藏🎁+关注❤ 😁😁😁
http://www.lryc.cn/news/3485.html

相关文章:

  • 使用动态参数构建CUDA图
  • 在Fortran中调用Python教程
  • 04-PS人像磨皮方法
  • nginx反向代理+负载均衡上传webshell重难点+apache漏洞
  • transition组件的使用
  • 多行文本在块元素中垂直居中
  • 在 WebAssembly 中使用 C/C++ 和 libbpf 编写 eBPF 程序
  • leveldb源码解析六——compact
  • 数据结构(二):单向链表、双向链表
  • COCO物体检测评测方法简介
  • 记一次上环境获取资源失败的案例
  • 实战超详细MySQL8离线安装
  • 依赖倒置原则|SOLID as a rock
  • Webpack的知识要点
  • handler解析(2) -Handler源码解析
  • 【算法】kmp
  • git 常用命令之 git checkout
  • 一些常见错误
  • [单片机框架][调试功能] 回溯案发现场
  • MySQL主从同步-(二)搭建从机服务器
  • Linux系列 备份与分享文档
  • SNI生效条件 - 补充nginx-host绕过实例复现中SNI绕过的先决条件
  • 傻白探索Chiplet,Modular Routing Design for Chiplet-based Systems(十一)
  • C语言静态库、动态库的封装和注意事项
  • MyBatis-Plus分页插件和MyBatisX插件
  • 年前无情被裁,面试大厂的这几个月…
  • 基于Java的分片上传功能
  • KDS安装步骤
  • JavaSE-线程池(1)- 线程池概念
  • 开源代码的寿命为何只有1年?