笔试题练习

如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。

方法一:按照等差数列两个相邻的数之间的差值相等

n = int(input("n="))
l = input("elements are :")
l = [int(i) for i in l.split()]
l.sort()

def isgen(N,L):
    for i in range(n-2):
        if L[i+2]-L[i+1]==L[i+1]-L[i]:
            return 'possible'
        else:
            return 'impossible'
print(isgen(n,l))

不要再傻乎乎的自己编排序的算法了。

方法二:利用等差数列的求和公式,算出等差比d,如果d是一个整数,那它就是一个数列,如果它有余数,那它就不是一个数列

n = int(input("n="))
l = input("elements are :")
l = [int(i) for i in l.split()]

def isgen(N,L):
    m = min(L)
    s = sum(L)
    d =(s - N*m)*2%(N*(N-1))
    if d!=0:
        return 'impossible'
    return 'possible'

print(isgen(n,l))

猜你喜欢

转载自blog.csdn.net/Strive_0902/article/details/81586407
今日推荐