建议加强数据
查看原帖
建议加强数据
265793
Sheng_Horizon楼主2022/8/23 19:23

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;
}

这份代码错在 在枚举约数 jja/ja/j 的时候,没有考虑 j=a/jj=a/j 的情况

2022/8/23 19:23
加载中...