数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N个整数。现在给出这N个整数,小明想知道包含这N个整数的最短的等差数列有几项?
误以为 排序后相邻的两项最小差为最大公差
如 1 5 11 d=2
1 7 16 d=3
# coding=utf8
""" 5 2 6 4 10 20 输出项数:10 """
import sysdef gcd(x, y): # 辗转相除 最大公约while x % y:x, y = y, x % yreturn yn = int(input())
l = list(map(int, input().split()))
if len(l) != n:print('None')sys.exit()l = sorted(l) # 必须 l = sorted(l) 不能仅仅sorted(l)
if l[0] == l[1]: # 如果等差为零 那么输入的长度即该数组的最小长度print(len(l))sys.exit()for i in range(2, len(l)):MIN_cha = gcd(l[i - 1] - l[i - 2], l[i] - l[i - 1])# print(MIN_cha)
print(int(1 + (l[-1] - l[0]) / MIN_cha))""" 4 10 4 19 22 """