Python实现PAT1030 完美数列

来源:互联网 发布:孝庄文皇后 知乎 编辑:程序博客网 时间:2024/06/05 22:38

N,q=map(int,input().split())l=list(map(int,input().split()))l.sort()m=0for i in range(N):    next_index=m+i    if next_index>=N:        break    for j in range(next_index,N):        if l[j]<=l[i]*q:            m+=1        else:            breakprint(m)

解释下第6行next_index值的设定,m为前一个最小值可以构成完美数列的个数,当遍历到数列后一个最小值时,直接将最大值L[j]设定为与当前最小值间隔为m的数列中的值;若next_index>=数列个数时,即使满足最小值*q>=M,完美数列最大个数也只能等于之前所得的m,因此构成完美数列的最大值为m


一开始看题后,不假思索(没动脑子的结果)导致运行超时,只能另觅它法

n,p=map(int,input().split())num=list(map(int,input().split()))M=max(num);m=min(num)for i in range(n):    if m*p<M:        num.remove(m)        m=min(num)    else:        breakprint(len(num))