PTA 1030完美数列 运行超时 求改进算法(python3)

img

img

# nmax最大值 nmin最小值 p 权
# 数列排序
# 从最小值递增开始乘以p 在数组中查询可以取得的最大值到该值的个数
n, p = map(int, input().split())
li = list(map(int, input().split()))
li.sort()
nu, num_now = 0, 0  # 可取最大数量,当前数组下标
while nu <= n - num_now:
    count = 0 
    for i in range(num_now, len(li)):
        if li[i] <= int(li[num_now]) * p:
            count += 1
        else:
            break
    if count > nu:
        nu = count
    num_now += 1
print(nu)


nmax最大值 nmin最小值 p 权

数列排序

从最小值递增开始乘以p 在数组中查询可以取得的最大值到该值的个数

n, p = map(int, input().split())
li = list(map(int, input().split()))
li.sort()
nu, num_now = 0, 0 # 可取最大数量,当前数组下标
while nu <= n - num_now:
count = 0
for i in range(num_now, len(li)):
if li[i] <= int(li[num_now]) * p:
count += 1
else:
break
if count > nu:
nu = count
num_now += 1
print(nu)
#这是我的代码

直接一次遍历就行吧,也不用排序。。判断当前元素与给定P的值是否大于最大值就行吧,是就加1 。。