[JSOI2009] 瓶子和燃料

[JSOI2009] 瓶子和燃料

根据裴蜀定理可以知道,ax+byax+by 能凑出最小的正整数为 gcd(a,b)gcd(a,b)

所以选择几个瓶子,答案就是几个瓶子的 gcdgcd。故将每个数分解因数,找最大且出现至少 kk 次的因数即可。

#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;
		}
	}
}
posted @   June_Failure  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示