注意
完美数列不一定要从给出的数列最小的一项开始,而是找尽可能的包含最多数的完美数列。
这个代码用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()
测试结果


&spm=1001.2101.3001.5002&articleId=82426064&d=1&t=3&u=cb011f081eb74ec4a37043e1a45dead9)
3079

被折叠的 条评论
为什么被折叠?



