zoukankan      html  css  js  c++  java
  • PAT 完美数列

    给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M<=m*p,则称这个数列是完美数列。

    现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。

    输入格式:

    输入第一行给出两个正整数 N 和 p,其中 N(<=105)是输入的正整数的个数,p(<=109)是给定的参数。第二行给出 N 个正整数,每个数不超过109

    输出格式:

    在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。

    输入样例:

    10 8
    2 3 20 4 5 1 6 7 8 9

    输出样例:

    8
    #二分法查询列表中第一个大于mp的数的位置,再 -1 就是最大的小于等于mp的数位置
    def upper_boun(l,h,mp,c):
        while l <= h:
            mid=l+(h-l)//2
            if c[mid]<= mp:
                l=mid+1
            else:
                h=mid-1
        return l
    a,b=map(int,input().split())
    c=list(map(int,input().split()))
    c.sort()    #升序
    ma=0
    for i in range(len(c)):
        k=upper_boun(i,len(c)-1,c[i]*b,c)
        ma=max(ma,k-i)
    print(ma)

    二分法,没毛病

  • 相关阅读:
    flask项目部署
    FastDFS分布式文件系统
    《app》团队冲刺二
    《APP》团队开发一
    软工二年级团队项目----自律小助手
    团队项目新闻app的需求分析
    团队成员及团队项目
    团队冲刺第八天
    团队冲刺第七天
    团队冲刺第六天
  • 原文地址:https://www.cnblogs.com/andrew3/p/12702643.html
Copyright © 2011-2022 走看看