1030. 完美数列(25)-PAT乙级
来源:互联网 发布:java培训4个月靠谱吗 编辑:程序博客网 时间:2024/05/18 02:13
题目:
给定一个正整数数列,和正整数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
解答:
//#include<iostream>//#include<algorithm>//using namespace std;////int main()//{// int N;// long long int p;// cin >> N >> p;// //if (N == 0) {// // cout << 0;// // return 0;// //}// 这个加不加答案都一样// long long int *n = new long long int[N];//第一次提交有一个答案错误// for (int i = 0; i < N; i++)// {// cin >> n[i];// //scanf("%d", &n[i]);// }// sort(n,n+N);//排序,默认升序// long long int min=0, max=N-1;// for (int i = 0; i < N/2+1; i++)// {// if (n[max] <= n[min] * p)//当看到一个比较大的数乘比较大的数时,用string不方便,就要想到long long int,具体追溯到n数组元素的值// {// cout << max + 1 - min;// //printf("%d", max + 1 - min);// break;// }// else if(n[max-1] <= n[min] * p)// {// cout << max - min;// //printf("%d", max - min);// break;// }// else if (n[max] <= n[min+1] * p)// {// cout << max - min;// //printf("%d", max - min);// break;// }// else// {// max--;// min++;// }// }// return 0;//}//很奇妙上面这个方法只有最后一个检查点错了#include<vector>#include<iostream>#include<algorithm>using namespace std;int main(){ int N; long long int p; cin >> N >> p; if (N == 0) { cout << N; return 0;//灵活运用return 0;及时结束进程 } vector<long long int> n(N); for (int i = 0; i < N; i++) { cin >> n[i]; } sort(n.begin(), n.end()); int result = 1; for (int i = 0; i <= N - 2; i++) { for (int j = i + result; j <= N - 1; j++) { if (n[j] > n[i] * p) break; result = max(result, j - i + 1);//巧妙运用max函数(#include<algorithm>) } } cout << result; return 0;}
0 0
- PAT-乙级-1030. 完美数列(25)
- PAT乙级.1030. 完美数列(25)
- PAT 乙级 1030. 完美数列(25)
- 1030. 完美数列(25)-PAT乙级
- PAT乙级 1030. 完美数列(25)
- PAT乙级1030. 完美数列(25)
- PAT 乙级 1030. 完美数列(25)
- [PAT乙级]1030. 完美数列(25)
- PAT 乙级 1030.完美数列(25)
- pat 乙级 1030. 完美数列(25)
- 1030. 完美数列(25)--PAT乙级
- PAT 乙级 1030. 完美数列(25)
- PAT乙级1030. 完美数列(25)
- PAT乙级1030. 完美数列(25)
- PAT 乙级 1030.完美数列
- [PAT-乙级]1030.完美数列
- PAT乙级 完美数列(25)
- PAT乙级—1030. 完美数列(25)-native
- javascript 第六篇(入门篇)
- 螺旋方阵
- matlab中窗函数的使用(二)
- 界面编写
- java创建删除文件
- 1030. 完美数列(25)-PAT乙级
- js输入输出问题
- Java实现遍历、排序、查找算法及简要说明
- Linux的消息队列,Windows的邮件槽,使用有感
- 数据库大表分割问题
- nodejs学习笔记
- 算法训练 矩阵乘法
- try{}cath{}不能被if else语句替换的例子
- CodeForces 764B Timofey and cubes