1030. 完美数列(25)
题目地址:1030. 完美数列
题目描述:
给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。
现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。
输入格式:
输入第一行给出两个正整数N和p,其中N(<= 105)是输入的正整数的个数,p(<= 109)是给定的参数。第二行给出N个正整数,每个数不超过109。输出格式:
在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。
易错点:
数字类型要设置为long long型才能通过最后一个样例。
程序:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int N, p;
cin >> N >> p;
long long arr[N];
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
sort(arr, arr+N);
int j, k, ans = 1;
for (j = 0; j < N; j++)
{
for (k = j + ans; k < N; k++)
{
if (arr[j] * p >= arr[k])
{
ans++;
}
else
{
break;
}
}
}
cout << ans << endl;
return 0;
}
本文介绍了一道名为“完美数列”的算法题,探讨了如何从给定的正整数中选择最多数量的数构成一个完美数列。文章提供了完整的C++实现代码,并强调了使用longlong型的重要性。
3581

被折叠的 条评论
为什么被折叠?



