【链接】
bzoj2257
【解题报告】]
这题用裴蜀定理,解释如下:
裴蜀定理:若
a
和
所以只需要求出所有数的因子。答案就是数量超过
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=10000005;
int n,m,cnt,num,a[maxn];
void Work(int x)
{
for (int i=2,k=sqrt(x); i<=k; i++)
if (x%i==0)
{
a[++cnt]=i;
if (i*i!=x) a[++cnt]=x/i;
}
a[++cnt]=x;
}
int main()
{
freopen("2257.in","r",stdin);
freopen("2257.out","w",stdout);
scanf("%d%d",&n,&m); cnt=0;
for (int i=1,x; i<=n; i++) scanf("%d",&x),Work(x);
sort(a+1,a+1+cnt); a[0]=0; num=1;
for (int i=cnt; i>=0; i--)
if (a[i]==a[i-1]) num++;
else
{
if (num>=m) {printf("%d",a[i+1]); return 0;}
num=1;
}
printf("1");
return 0;
}