求调
查看原帖
求调
1269423
huge_wave楼主2024/9/4 22:13
#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int> m;
void fj(int x,int y){
	for(int i=2;i<=x/i;i++){
		while(x%i==0){
			m[i]++;
			x/=i;
		}
		m[i]*=y;
	}
	if(x!=1){
		m[x]+=y;
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin>>n;
	int m1,m2;
	cin>>m1>>m2;
	if(m2==0||(m1==1&&m2==1)){
		cout<<0;
		return 0;
	}
	fj(m1,m2);
	int minn=2100000000;
	while(n--){
		bool pd=0;
		int s,ans=0;
		cin>>s;
		for(int i=2;i<=s/i;i++){
			int sum=0;
			while(s%i==0){
				sum++;
				s/=i;
			//	cout<<1;
			}
			if(sum!=0&&m[i]==0){
				pd=1;
				break;
			}
			if(sum!=0&&m[i]!=0){
				if(sum%m[i]==0){
					ans=max(ans,0);
				}
				else{
					ans=max(ans,(m[i]-1)/sum+1);
				}
			}
		}
		if(s!=1){
			if(m[s]==0){
				continue;
			}
			ans=max(ans,m[s]);
		}
		if(pd){
			continue;
		}
		minn=min(minn,ans);
	}
	if(minn==2100000000){
		cout<<-1;
	}
	else{
		cout<<minn;
	}
	
	return 0;
}            
2024/9/4 22:13
加载中...