【Python训练营】Python每日一练----第13天:等差数列

举报
是Dream呀 发表于 2022/02/07 23:13:55 2022/02/07
【摘要】 【Python训练营】Python每日一练----第13天:等差数列

在这里插入图片描述

📢📢📢📣📣📣
🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜
🏅🏅🏅2021年度博客之星TOP100,2021年度博客之星领域TOP5,Python领域优质创作者,欢迎大家找我合作学习(文末有VX 想进学习交流群or学习资料 欢迎+++)
💕入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺
🍉🍉🍉“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈
🌟🌟🌟✨✨✨

前言:【Python训练营】是针对Python语言学习所打造的一场刷题狂欢party! 对基础知识把握不牢固的话,欢迎参考此套课程:Python公开课 搭配使用最佳嗷~喜欢的话就抓紧订阅起来吧!🍋🍋🍋如果对学习没有自制力或者没有一起学习交流的动力,欢迎私信或者在文末添加我的VX,我会拉你进学习交流群,我们一起交流学习,报团打卡

@TOC

题目描述

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

输入描述
输入的第一行包含一个整数 N。
第二行包含 NN 个整数 A_1,A_2,··· ,A_N。(注意 A_1∼ A_N不一定是按等差数列中的顺序给出)其中2≤N。

输出描述
输出一个整数表示答案。

输入输出样例

示例
输入

5
2 6 4 10 20
输出

10
样例说明: 包含 2641020 的最短的等差数列是 2468101214161820。

运行限制
最大运行时间:1s
最大运行内存: 256M

解题思路

  • 首先这道题让我们求最短的等差数列,我们就可以把两两之间最小的差值作为公差来计算;
  • 输入我们还是选择最原始的列表输入多个元素的方法:b = list(map(int,input().split()))
  • 将列表通过集合进行去重处理,防止得到的差值是零:b = list(set(b))
  • 设置一个最大的数值 value = math.inf,使之每次如果两数相减有结果就是value等于那个值,一直得到最小的差值value;
  • 此时注意本题最大的一个坑,就是公差为零时,最短的数列就是我们输入的数据个数! 其余情况只需要让最大的元素减最小的元素,得到的差值除以我们之前得到的最小的差值就ok啦if l == 1: n = a else: n = (b[-1]-b[0])/value +1

源码分享

import os
import sys
import math
# 请在此输入您的代码
a = int(input())
b = list(map(int,input().split()))
# 将列表通过集合进行去重处理,防止得到的差值是零。
b = list(set(b))
b.sort()
l = len(b)
# 设置一个最大的数值,使之每次如果两数相减有结果就是value等于那个值,一直得到最小的差值value;
value = math.inf
for i in range(l-1):
  minvalue = b[i+1]-b[i]
  if minvalue < value :
    value = minvalue
# 此时注意本题最大的一个坑,就是公差为零时,最短的数列就是我们输入的数据个数!
if l == 1:
  n = a
else:
  n = (b[-1]-b[0])/value +1
print(int(n))

学习总结

1.value = math.inf表示value取到无限大实数
2. 将列表通过集合进行去重处理:b = list(set(b))
3. 要注意公差为0的时候数列也是存在的!此时列表中的元素就是最短的长度,不可以进行去重。

🏅今天是我在Python训练营的第 13 天,希望每天都能见到最棒的你🏅

🌲🌲🌲 好啦,这就是今天要分享给大家的全部内容了
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~
在这里插入图片描述
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。