题解byliguanghan1 解说代码大神跳过
#include <bits/stdc++.h>
using namespace std;
typedef long long I;
I a[100002];//桶排序
int main()
{
I n,k;//看题的都知道干什么
cin>>n>>k;
for(I i=0; i<n; i++)
{
I x;
cin>>x;
for(I i=1; i<=sqrt(x); i++)
{
if(x%i==0)
{
a[i]++;
if(x!=i*i)
a[x/i]++;//录入到对应的桶中
}
}
}
for(I i=100000; i>0; i--)
if(a[i]>=k)//寻找符合条件的数
{
cout<<i;
break;
}
return 0;
}
纯代码
#include <bits/stdc++.h>
using namespace std;
typedef long long I;
I a[100002];
int main()
{
I n,k;
cin>>n>>k;
for(I i=0; i<n; i++)
{
I x;
cin>>x;
for(I i=1; i<=sqrt(x); i++)
{
if(x%i==0)
{
a[i]++;
if(x!=i*i)
a[x/i]++;
}
}
}
for(I i=100000; i>0; i--)
if(a[i]>=k)
{
cout<<i;
break;
}
return 0;
}