求调
查看原帖
求调
1269423
huge_wave楼主2024/9/4 22:27
#include<bits/stdc++.h>
using namespace std;
#define int long long
unordered_map<int,int> m;
unordered_map<int,int> mp;
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;
		mp.clear();
		int s,ans=0;
		cin>>s;
		for(int i=2;i<=s/i;i++){
			while(s%i==0){
				mp[i]++;
				s/=i;
			}
		}
		for(auto qw:m){
			int sd=qw.first;
			int as=qw.second;
			if(as!=0){
				if(m[sd]==0){
					pd=1;
					break;
				}
			}
		}
		if(pd){
			continue;
		}
		for(auto qw:mp){
			int ys=qw.first;
			int gs=qw.second;
			if(gs!=0&&m[ys]!=0){
				if(m[ys]>gs){
					ans=max(ans,(m[ys]-1)/gs);
				}
			}
		}
		minn=min(ans,minn);
	}
	if(minn==2100000000){
		cout<<-1;
	}
	else{
		cout<<minn;
	}
	
	return 0;
}            
2024/9/4 22:27
加载中...