题目描述:
解题思路:
- 首先将数组a从小到大排序
- 第一层for循环遍历取最小值Min,第二层遍历取适合的最大值
AC代码:
#include <bits/stdc++.h>
using namespace std;
int a[100100];
int main()
{
int n,p;
cin>>n>>p;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
int len=0;//存储完美数列的最长长度
for(int i=0;i<n;i++)
{
int Min=a[i];
for(int j=i+len;j<n;j++)
//j=len+i的原因是以后遍历得到的完美数列长度必须要大于之前遍历得到的完美数列长度
{
if(Min*p>=a[j])
len=j-i+1;
else break;
}
}
cout<<len;
return 0;
}