普及组的题也开始做不来了…
一开始傻逼了,去写了个假算法…
后来才发现,直接用map统计每个数的因数不就好了…
c++代码如下:
#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i = x ; i <= y; ++ i)
#define repd(i,x,y) for(register int i = x ; i >= y; -- i)
using namespace std;
typedef long long ll;
template<typename T>inline void read(T&x)
{
char c;int sign = 1;x = 0;
do { c = getchar(); if(c == '-') sign = -1; }while(!isdigit(c));
do { x = x * 10 + c - '0'; c = getchar(); }while(isdigit(c));
x *= sign;
}
const int N = 1e3+50;
int n,k,ans,v[N];
map<int,int>a;
int main()
{
read(n); read(k);
rep(i,1,n)
{
read(v[i]);
int p = sqrt(v[i]);
rep(j,1,p)
if(v[i]%j==0){
++ a[j];
if(a[j] >= k) ans = max(ans,j);
if(j * j == v[i]) continue;
++ a[v[i]/j];
if(a[v[i]/j] >= k) ans = max(ans,v[i]/j);
}
}
cout << ans << endl;
return 0;
}