鱼C论坛

 找回密码
 立即注册
查看: 1093|回复: 1

等差数列!!求代码

[复制链接]
发表于 2020-2-23 15:52:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

输入
输入的第一行包含一个整数N。
第二行包含N 个整数A1.A2,..., AN。(注意A1<=AN 并不一定是按等差数列中的顺序给出)
2<=N<=100000,0<=Ai<=10^9

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

样例输入
5
2 6 4 10 20

样例输出
10

提示
包含2、6、4、10、20 的最短的等差数列是2、4、6、8、10、12、14、16、18、20。
注:2019蓝桥杯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 09:02:55 | 显示全部楼层
  1. def solution(*arg):
  2.         list1 = []
  3.         for x in arg:
  4.                 list1.append(x)#将传入值做成列表list1
  5.         list1.sort()#列表排序,从小到大
  6.         min_1 = list1[1] - list1[0]#以前两个数的差作为公差
  7.         for i in range(len(list1) - 1):
  8.                 min_2 = list1[i+1] - list1[i]
  9.                 if min_1 <= min_2:
  10.                         continue
  11.                 else:
  12.                         min_1 = min_2#找出最小公差
  13.         list2 = []#建一个新列表
  14.         for s in range(list1[0],list1[len(list1)-1]+1,min_1):#求出等差数列
  15.                 list2.append(s)
  16.         return len(list2),list2
  17.    
  18. print(solution(2,6,9,14,19,25,38))
复制代码


不知道会不会溢出,我也是新手,如果有不足的地方,麻烦说一下,让我学习学习(ps:我只测试了一个,不知道其他的可不可以)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-29 02:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表