RT。
4 3
6
9
2
2
上方的数据输出应为 2,但下方代码会输出 3,但下方代码过了
#include<bits/stdc++.h>
using namespace std;
int n,k;
int p[10000010],t;
map<int,int> mp;
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
for(int j=1;j*j<=a;j++)
{
if(a%j!=0)continue;
p[++t]=a/j;
mp[a/j]++;
p[++t]=j;
mp[j]++;
}
}
int ans=0;
for(int i=1;i<=t;i++)
if(mp[p[i]]>=k)ans=max(ans,p[i]);
cout<<ans;
return 0;
}
这份代码错在 在枚举约数 j 和 a/j 的时候,没有考虑 j=a/j 的情况