【bzoj 2257】瓶子和燃料
阿新 • • 發佈:2019-01-23
解題思路
個數中選 個使這 個數的最大公因數儘可能大。
把每個數分解因數,最大化出現次數大於等於 的因數。
程式碼:
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdlib>
#include<map>
using namespace std;
map<int ,int>:: iterator it;
map<int,int>cnt;
int n,k,ans;
int main(){
int x;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d",&x);
for(int j=1;j*j<=x;j++)
if(x%j==0) {cnt[j]++;cnt[x/j]++;}
}
for(it=cnt.begin();it!=cnt.end();it++)
if (it->second >=k ) ans=it->first;
printf("%d",ans);
return 0;
}