注意
完美数列不一定要从给出的数列最小的一项开始,而是找尽可能的包含最多数的完美数列。
这个代码用python2实现会出现一个测试点超时,用python3没有问题。
代码如下
# -*- coding: UTF-8 -*-
def perfectSequence():
N, q= map(int, input().split())
numList = sorted(map(int, input().split()))
count = 0 ##存放完美数列最大长度
for i in range(N):
mp = numList[i] * q
nextRange = i + count ##将完美数列往后挪一位,看是否可得到更长的完美数列
if nextRange >= N: ##超出给出的数列范围
break
for j in range(nextRange, N):
if mp >= numList[j]: ##验证新的完美数列是否可以比之前更长
count += 1
else:
break
print (count)
if __name__ == '__main__':
perfectSequence()