1030. 完美数列(25)
来源:互联网 发布:淘宝怎么买图片空间 编辑:程序博客网 时间:2024/06/08 19:12
给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。
现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。
输入格式:
输入第一行给出两个正整数N和p,其中N(<= 10^5)是输入的正整数的个数,p(<= 10^9)是给定的参数。第二行给出N个正整数,每个数不超过10^9。
输出格式:
在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。
输入样例:
10 8
2 3 20 4 5 1 6 7 8 9
输出样例:
8
算法分析:先对数组进行从大到小排序,然后假设第一个数字是完美数列的列首,找出其最大的长度;再假设第二个数字是完美数列的列首,找出最大长度;依此类推。
#include <stdio.h>#include <stdlib.h>int cmp(const void *a, const void *b){ return (*(int *)a < *(int *)b) ? 1 : -1;}int main(){ long long list[100000] = {0}; //如果不定义long long会溢出 int n, p, i, j, r = 1, t = 1; scanf("%d %d", &n, &p); for(i = 0; i < n; i++) scanf("%I64d", &list[i]); qsort(list, n, sizeof(list[0]), cmp); for(i = 0; i < n - 1; i++) { for(j = i + r; j < n; j++) { if(list[i] <= list[j] * p) { t = j - i + 1; if(t > r) r = t; } else break; } } printf("%d", r); return 0;}
1 0
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- python 使用ssh scp做个升级程序
- 剑指offer:替换空格
- CentOS7搭建dev-stack环境
- 抽象工厂模式
- 教你打造一个万能的适配器
- 1030. 完美数列(25)
- java学习阶段归纳总结记录-for循环嵌套
- 程序员的3年之痒改变的不止薪水
- node express ejs 搭建个人网站(2)
- Android Studio使用命令将代码托管到GitHub上
- MAX3485芯片使用方法
- 第一行代码学习3(9)
- 打造属于你的网络请求框架(一)volley源码浅析
- Ubuntu下解决adb devices:???????????? no permissions的方法