[JSOI2009] 瓶子和燃料
[JSOI2009] 瓶子和燃料
根据裴蜀定理可以知道, 能凑出最小的正整数为 。
所以选择几个瓶子,答案就是几个瓶子的 。故将每个数分解因数,找最大且出现至少 次的因数即可。
#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
map<int,int> a;
inline long long read()
{
register long long x=0,f=0;
register char t=getchar();
while(t<'0'||t>'9')f^=(t=='-'),t=getchar();
while(t>='0'&&t<='9')x=(x<<3)+(x<<1)+(t^48),t=getchar();
return f?-x:x;
}
int main()
{
int n,k;
n=read(),k=read();
int maxx=-1e6-10;
for(int i=1;i<=n;i++)
{
int v;
v=read();
for(int j=1;j*j<=v;j++)
{
if(v%j==0)
{
a[j]++;
a[v/j]++;
}
}
if(sqrt(v)*sqrt(v)==v)
a[sqrt(v)]--;
}
for(map<int,int>::iterator it=a.end();it!=a.begin();it--)
{
if((*it).second>=k)
{
cout<<(*it).first<<endl;
return 0;
}
}
}

浙公网安备 33010602011771号