求助帖70分,必关
查看原帖
求助帖70分,必关
1272630
Norton_genitals楼主2025/6/21 16:57
#include<bits/stdc++.h>
using namespace std;
map<int,int>my2;
map<int,int>x2;
int xb=0,my[1010];
int n,m1,m2,ma,ans=114514,fl,cnt;
void zyz(int n,bool ff){
	fl=0;
	for(int i=2;i*i<=n;i++){
		if(n%i==0){
			n/=i;
			if(ff==1){
				if(my2[i]==0)my[++xb]=i;
				my2[i]+=m2;
			}
			else{
				x2[i]+=1;
			}
			fl=1;
			i=1;
		}
	}
	if(fl==0){
		if(ff==1){
			my[++xb]=n;
			my2[n]+=m2;
		}
		else{
			x2[n]+=1;
		}
	}
}
int main(){
	cin>>n>>m1>>m2;
	zyz(m1,1);
	for(int i=1;i<=n;i++){
		cin>>cnt;
		x2.clear();
		zyz(cnt,0);
		ma=-1;
		for(int j=1;j<=xb;j++){
			if(x2[my[j]]==0){
				ma=114514;
				break;
			}
			else{
				ma=max(ma,(my2[my[j]]-1)/x2[my[j]]+1);
			}
		}
		if(ma==114514)continue;
		else ans=min(ma,ans);
	}
	if(ans==114514)cout<<"-1";
	else cout<<ans;
	
	return 0;
}
2025/6/21 16:57
加载中...