PAT-1030 完美数列 (25 分)

在这里插入图片描述
先将输入的数放在num数组中,然后用sort()函数升序排序,之后从第一个元素开始往后遍历,注意要加上步长,不然会超时,最后一个测试点是关于对p的检测,改为长整型就通过了

代码

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n,j,max=1;//max记录当前最多个数
    long long p;
    cin>>n>>p;
    int num[n];
    for(int i=0;i<n;i++)cin>>num[i];
    sort(num,num+n);
    for(int i=0;i<n-1;i++)
    {
        for(j=i+max;j<n;j++)
        {
            if(num[j]<=num[i]*p)max+=1;
            else break;
        }
    }
    cout<<max;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42240667/article/details/89736688