1030 完美数列

一、题目

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

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

二、输入输出

输入格式

输入第一行给出两个正整数 N 和 p,其中 N(≤105≤10^5≤105)是输入的正整数的个数,p(≤109≤10^9≤109​​)是给定的参数。第二行给出 N 个正整数,每个数不超过 10​910​^910​9​​ 。

输出格式

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

三、样例

输入样例

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

输出样例

8

四、题目分析

首先读入数据,对数据进行排序,依次遍历最小值,找到小于mpmpmp的数量(即找到第一个大于mpmpmp的数),输出其中的最大值。由于对数据已经进行排序,在进行查找第一个大于mp的数时,使用顺序查找会超时,因此需要采用二分查找,使用函数lower_bound()upper_bound()。还需要主要数据类型,使用int会溢出。

五、代码

#include<bits/stdc++.h>
using namespace std;
int main(){int n;long long int p;int num_max=0;cin>>n>>p;vector<long long int> v;for(int i=0;i<n;i++){long long int x;cin>>x;v.push_back(x);}sort(v.begin(),v.end());for(int i=0;i<v.size();i++){long long int x=v[i]*p;int num=upper_bound(v.begin()+i,v.end(),x)-(v.begin()+i);if (num>num_max)num_max=num;}cout<<num_max;
}

六、总结

1.数据类型的存储范围

  • 整型数据存储空间及数值范围(Visual C++)

    类型 名称 字节数 数值范围 数值范围(二进制) 大致范围(十进制)
    [signed] int 有符号基本整型 4 [-2,147,483,648 ~ 2,147,483,647] −231-2^{31}−231~(231−1)(2^{31}-1)(231−1) −109-10^{9}−109~10910^{9}109
    unsigned int 无符号基本整型 4 [0 ~ 4,294,967,295] 0 ~ (232−1)(2^{32}-1)(232−1) 000~10910^{9}109
    [signed] short [int] 有符号短整型 2 [-32,768 ~ 32,767] −215-2^{15}−215~(215−1)(2^{15}-1)(215−1) −105-10^{5}−105~10510^{5}105
    unsigned short [int] 无符号短整型 2 [0 ~ 65,535] 0 ~ (216−1)(2^{16}-1)(216−1) 0 ~10510^{5}105
    [signed] long [int] 有符号长整型 4 [-2,147,483,648 ~ 2,147,483,647] −231-2^{31}−231~(231−1)(2^{31}-1)(231−1) −109-10^{9}−109~10910^{9}109
    unsigned long [int] 无符号长整形 4 [0 ~ 4,294,967,295] 0 ~ (232−1)(2^{32}-1)(232−1) 0 ~10910^{9}109
    [signed] long long [int] 有符号双长整型 8 [-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807] −263-2^{63}−263~(263−1)(2^{63}-1)(263−1) −1018-10^{18}−1018~101810^{18}1018
    unsigned long long [int] 无符号双长整型 8 [0 ~ 18,446,744,073,709,551,615] 0 ~ (264−1)(2^{64}-1)(264−1) 0 ~101910^{19}1019

2.二分查找函数

  • lower_bound( )

    lower_bound( begin,end,num)
    

    从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。

  • upper_bound( )

    upper_bound( begin,end,num)
    

    从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end

  • 注意事项:

    • 1.二分查找需要先进行排序
    • 2通过返回的地址减去起始地址begin,得到找到数字在数组中的下标
    • 3begin、end可以是指针,也可以是迭代器

PAT (Basic Level) Practice1030 完美数列相关推荐

  1. 【题解】PAT (Basic Level) Practice (中文)

    互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...

  2. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...

  3. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  4. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)

    PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)  http://www.patest.cn/contests/pat-b-practise/1034 ...

  5. PAT basic level 答案+解题思路+难点 (个人刷题记录)

    PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...

  6. 可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决)

    可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决) c1, c2 = map(int,input().split( ...

  7. 1001 害死人不偿命的(3n+1)猜想 (15分) PAT (Basic Level) Practice (中文)C语言版

    PAT (Basic Level) Practice (中文) 1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一 ...

  8. 卡拉兹(Callatz)猜想,PAT(Basic Level) Practise NO.1001

    PAT(Basic Level) Practise NO.1001 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半. 这样 ...

  9. PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分)

    PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即T代表顶级:A代表甲级:B代表乙级: 第 ...

最新文章

  1. spring4-3-AOP-面向切面编程
  2. swal弹窗_swal() 弹出层的用法
  3. java程序设计_JAVA基础程序设计之方法
  4. matlabk大于等于0如何表示_【底层原理】浮点数在计算机中是如何表示
  5. 理想回应800倍高阶收EPB驻车芯片:不属实
  6. Ubuntu更改镜像源
  7. leetcode331. Verify Preorder Serialization of a Binary Tree
  8. MySQL 命令行帮助的使用
  9. HttpModule 与 Globle.asax
  10. ES Transport Client学习
  11. 黑马程序员—-C语言入门十重奏之十renascence
  12. ​怎么判断是前端bug还是后端bug?
  13. 记一次JAVA ssm+mysql 开发
  14. H5案例分享—你的数学是语文老师教的吗?
  15. Python爬虫实战案例:取喜马拉雅音频数据详解
  16. 共享店铺系统如何设计?具体如何做?
  17. cobar是什么? 能做什么?
  18. 软件工程毕业设计课题(42)微信小程序毕业设计JAVA小说电子书小程序系统毕设作品项目
  19. OpenCV-霍夫线变换
  20. 星际无限 | 2021年IPFS应该关注的重点是什么?

热门文章

  1. 使用Redis构建简单的社交网站
  2. python封装成exe后运行失败_python 在编译成EXE 文件后报错 我实在是找不出原因
  3. 蚂蚁S9矿卡ddr型号确认方法
  4. three几何线在mapbox地图显示
  5. dll可以在linux下使用吗_Python 下使用 Altair 数据制图 | Linux 中国
  6. csgo跳投绑定指令_csgo控制台指令大全
  7. php redis 查询,Redis慢查询日志 PHP中使用redis – 安装扩展模块
  8. detectmultiscale函数参数含义_OpenCV人脸识别--detectMultiScale函数
  9. python自动qq群发_用Python自动办公,做职场高手
  10. thinkphp漏洞_【组件攻击链】ThinkCMF 高危漏洞分析与利用